В настоящее время у меня есть 3 класса в моей схеме; User
, Thread
а также IsMember
,
Потоки могут иметь преимущество перед пользователями с именем IsMember, то есть они принадлежат этой теме (приложение чата).
Я хотел бы иметь все темы, к которым принадлежит пользователь. Это легко сделать с помощью следующего запроса:
select EXPAND(IN('IsMember')) from <@rid> limit -1
Однако это приводит к массиву с потоками, которые имеют ссылку на ребра IsMember в OUT_IsMember
смещение. Вместо этого я хотел бы иметь User
объекты, вставленные в Thread
объекты. Как это:
[
{
class: "Thread",
users: [
{
class: "User"},
{
class: "User"}
]
}
]
Так как есть много записей, использующих Traverse, как;
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>
Других решений пока нет …