如何从Gremlin中的特定顶点中找到没有特定边的顶点



我正在使用python来运行我的gremlin查询,对此我仍在习惯/学习。假设我有顶点标签AB,从AB可以有一条边,称为abEdge。我可以从特定A顶点中找到具有这种边的B顶点,其中:

g.V()
.hasLabel("A")
.has("uid", uid)  # uid is from a variable
.outE("abEdge")
.inV()
.toList()

但是,我该如何从特定A顶点中找到没有此类边的B顶点呢?

我的本能是尝试以下内容:

# Find B edges without an incoming edge from a particular A vertex
gremlin.V()
.hasLabel("B")
.where(__.not_(inE("abEdge").from_(
V()
.hasLabel("A")
.has("uid", uid)
)))
.next()

这导致了一个错误的查询(还不确定在哪里(,我仍在阅读Gremlin,但我也受到时间限制,所以我在这里问。如果有人能帮忙,但只使用groovy语法,这也很好,因为在两者之间转换还不错。

任何解释都会很有帮助,因为我还在学习这项技术。

更新

我想如果这是一个现实生活中的问题,并且与这个网站有关。我们可以问(A=PersonB=Programming-LanguageabEdge=knows(:

特定的人A不知道哪些编程语言?

看起来你几乎得到了答案:

g.V().hasLabel("B"). 
filter(__.not_(__.in_('abEdge').has("A","uid",uid))). 
toList()

当只使用单个Traversal参数时,我更喜欢filter(),但我认为如果您喜欢,可以用where()替换。

相关内容

  • 没有找到相关文章

最新更新