【发布时间】:2020-09-18 13:18:09
【问题描述】:
我对 Gremlin 还很陌生,我正在努力提高查询效率。
使用看起来像这样的图表:
[vertex: label=a] -> [vertex: label=b] -> [vertex: label=c] -> [vertex: label=d]
我需要遍历图,并得到遍历每一步的结果。
例如,从我的基础顶点中,我可能需要使用标签“b”获取与其相关的所有内容和使用标签“c”获取与“b”相关的所有内容等等。
我可以像这样单独处理请求:
results1 = g.V('someid').out().hasLabel('b').toList()
results2 = g.V('someid').out().hasLabel('b').out().hasLabel('c').toList()
results3 = g.V('someid').out().hasLabel('b').out().hasLabel('c').out().hasLabel('d').toList()
但这似乎违反直觉,并且响应时间开始增加。
我不太确定我在寻找什么,但也许会以某种方式继续搜索图的子集,而不是每次都从基本顶点开始。
编辑:
我找到了 Union 步骤,但这似乎将多个小查询合并为一个大查询,我相信最终会导致与单独执行所有查询相同的低效率。
【问题讨论】:
-
努力确保我完全理解您的问题。您是否正在寻找一种从您以前找到的地方开始未来遍历的方法?如果是这样,您可以将 ID 列表作为一个选项传递给
V()步骤。 -
对不起,如果我不是很清楚。开始查询时,我有一个 ID,我将其传递给 V()。然后我需要递归地获取该顶点的关系。所以我需要 V()->A 和 V()->A->B 和 V()->A->B->C 等
标签: gremlin graph-databases amazon-neptune