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>)

根本不会削减它,因为我必须遍历线程/用户来映射它们,这将花费太长时间。

由于我用 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>