OrientDB/PhpOrient 从具有优势的用户那里获取用户

OrientDB/PhpOrient get users from a user with edge

目前我的架构中有 3 个 类; UserThreadIsMember

线程可以有一个名为 IsMember 的用户边缘,这意味着它们属于该线程(聊天应用程序)。

我想要一个用户所属的所有线程。这可以通过使用以下查询轻松完成:

select EXPAND(IN('IsMember')) from <@rid> limit -1 

然而,这会导致数组中的线程引用 OUT_IsMember 偏移量中的 IsMember 边。相反,我想将 User 对象插入到 Thread 对象中。像这样:

[
 {
   class: "Thread",
   users: [
    {
      class: "User"
    },
    {
      class: "User"
    }
   ]   
 }
]

因为有很多记录使用像这样的遍历;

traverse OUT('IsMember') from (select EXPAND(IN('IsMember')) from <@rid>)

根本不会削减它,因为我必须循环遍历 Threads/Users 来映射它们,这会花费太长时间。

因为我在 PHP 中写作,所以我正在使用官方驱动程序 https://github.com/Ostico/PhpOrient 和这个驱动程序 Bag 保持为空,所以下面的查询也不会工作;

select EXPAND(IN('IsMember')) from 12:589 fetchplan out_IsMember:2

如果要提取连接到线程的用户,线程连接到给定用户,可以使用

SELECT expand(IN('IsMember').out("IsMember")) FROM <@rid>