Переход к вершинам без ребер с помощью gremlin - PullRequest
1 голос
/ 27 марта 2020

Мои вершины имеют одну из двух меток «Пользователь» и «Группа», а ребра помечены «содержит». Вершина «Группы» может указывать на вершины «Пользователя» или другие вершины «Группы». Я использую следующий запрос, чтобы найти вершины «пользователя», начиная с вершины группы. Если вершина «Группы» указывает на другую вершину «Группы», она переходит к этой вершине подгруппы «Группа», чтобы найти вершины «Пользователя».

g.V().hasLabel('Group').has('AccountName','oem').repeat(out('contains')).until(hasLabel('User'))

Теперь мне нужно перейти к вершинам «Группы» которые не указывают ни на какие другие вершины. После прочтения некоторых других сообщений я попробовал следующее, но у меня появилось сообщение «Ошибка компиляции запроса Gremlin: неоднозначность между« P.not »и« __. Not »». Какой правильный путь к express что-то в этом роде?

g.V().hasLabel('Group').has('AccountName','oem').repeat(out('contains')).until(not(outE())) <<== Error

1 Ответ

2 голосов
/ 27 марта 2020

Вместо использования not(outE()) вы можете использовать outE().count().is(0) в качестве другого средства для express этого запроса. Это позволило бы устранить необходимую неоднозначность явного использования класса P или анонимного обхода (двойной подчеркивание, __) с not().

...