Graphdb Gremlin查询以按属性值匹配找到顶点

时间:2019-08-04 18:43:10

标签: properties find gremlin vertex tinkerpop3

假设显示在

上的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')))

这些似乎扫描数据库,但不返回任何结果。在这里,inner()可能不是正确的步骤。

最好只需要一个查询,而不必先读出参考属性值并为之组合一个字符串列表。 任何纯正的Gremlin技巧或技巧都可以接受。

1 个答案:

答案 0 :(得分:0)

我想您问题的直接答案是做类似的事情:

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

我之所以说“假设”,是因为尽管这种遍历会机械地获得您想要的答案,但您还是要注意不要对遍历V()进行完整的图形扫描。因此,您需要确保拥有一个图形数据库,该数据库可以以某种方式使用索引或足够小的数据集来优化遍历过程。