Graphdb Gremlin 查询通过 属性 值匹配查找顶点

Graphdb Gremlin query to find vertices by property value match

假设 AWS Neptune 属性 图中显示了一个简单的 graphdb 内容

http://tinkerpop.apache.org/docs/current/reference/#graph-computing

我正在寻找一种纯 gremlin 解决方案,以从参考顶点的 属性 值集中查找至少具有一个 属性 值的顶点。对于给定的 属性,该解决方案需要使用多个值。即,如果一个顶点至少有一个共同值,则应该找到该顶点。在此示例中,我们正在寻找具有与 V(3) 具有相同(在多个值的情况下,至少一个)'lang' 属性 值的所有顶点。

尝试过:

g.V().has('lang', within(V(3).properties('lang')))
g.V().has('lang', within(V(3).properties('lang').value()))
g.V().has('lang', within(V(3).valueMap('lang')))

这些似乎扫描了数据库,但 returns 没有结果。可能 within() 不是这里的正确步骤。

最好是单个查询,而不必先读出参考 属性 值和 assemble 内部的字符串列表。 欢迎任何纯粹的 Gremlin 技巧或技术。

我想你的问题的直接答案是做这样的事情:

gremlin> g.V(3).as('x').V().hasLabel('software').where(neq('x')).where(eq('x')).by('lang')
==>v[5]

我说 "suppose" 因为虽然这种遍历机械地得到你想要的答案,但你要小心不要在你的中间遍历中结束全图扫描 V().所以你会想要确保你有一个图形数据库,可以通过某种索引或足够小的数据集来优化这种遍历来进行搜索。