使用 gremlin 遍历没有任何边缘的顶点
Traverse to vertices without any edge with gremlin
我的顶点有两个标签 'User' 和 'Group' 之一,边被标记为 'contains'。 'Group' 个顶点可能指向 'User' 个顶点或其他 'Group' 个顶点。我使用以下查询从组顶点开始查找 'User' 个顶点。如果一个 'Group' 顶点指向另一个 'Group' 顶点,它遍历到那个子 'Group' 顶点以找到 'User' 个顶点。
g.V().hasLabel('Group').has('AccountName','oem').repeat(out('contains')).until(hasLabel('User'))
现在我需要遍历到 'Group' 个不指向任何其他顶点的顶点。在阅读了一些其他帖子后,我尝试了以下内容,但我得到了 "Gremlin Query Compilation Error: Ambiguity between 'P.not' and '__.not'" 表达类似内容的正确方法是什么?
g.V().hasLabel('Group').has('AccountName','oem').repeat(out('contains')).until(not(outE())) <<== Error
您可以使用 outE().count().is(0)
作为表达此查询的另一种方式,而不是使用 not(outE())
。这将消除明确使用 P class 或匿名遍历(双下划线,__
)与 not()
.
所需的歧义
我的顶点有两个标签 'User' 和 'Group' 之一,边被标记为 'contains'。 'Group' 个顶点可能指向 'User' 个顶点或其他 'Group' 个顶点。我使用以下查询从组顶点开始查找 'User' 个顶点。如果一个 'Group' 顶点指向另一个 'Group' 顶点,它遍历到那个子 'Group' 顶点以找到 'User' 个顶点。
g.V().hasLabel('Group').has('AccountName','oem').repeat(out('contains')).until(hasLabel('User'))
现在我需要遍历到 'Group' 个不指向任何其他顶点的顶点。在阅读了一些其他帖子后,我尝试了以下内容,但我得到了 "Gremlin Query Compilation Error: Ambiguity between 'P.not' and '__.not'" 表达类似内容的正确方法是什么?
g.V().hasLabel('Group').has('AccountName','oem').repeat(out('contains')).until(not(outE())) <<== Error
您可以使用 outE().count().is(0)
作为表达此查询的另一种方式,而不是使用 not(outE())
。这将消除明确使用 P class 或匿名遍历(双下划线,__
)与 not()
.