以下堆栈溢出问题
How to increase performance of shortest path using Gremlin?
展示了如何找到从ID为687
的单个起始顶点到ID为1343
的终止顶点的最短路径,并通过确保没有使用{{1} },store
和without
aggregate
我想以相同的效率执行相同的查询,但是我需要从具有相同标签的多个起始顶点到相同结束顶点的所有最短路径,例如,看起来像这样(尽管这不起作用)
g.V(687).store('x').repeat(out().where(without('x')).aggregate('x')).until(hasId(1343)).limit(1).path()
我在语句中尝试了两个重复的多个构造,但是无法为每个起始顶点获得独立的g.V().hasLabel('label').store('x').repeat(out().where(without('x')).aggregate('x')).until(hasId(1343)).limit(1).path()
。我也在使用store('x')
平台,因此它限制了不允许循环/脚本的Gremlin的使用。所有gremlin查询必须以AWS Neptune
开头,并由与g.
链接在一起的命令组成
https://docs.aws.amazon.com/neptune/latest/userguide/access-graph-gremlin-differences.html
答案 0 :(得分:1)
该技术不能应用于多个起始顶点。但是,您可以从另一侧开始,因为这是一个已知的顶点:
g.V(1343).store('x').
repeat(__.in().where(without('x')).aggregate('x')).
until(hasLabel('label')).
path()
如果其中一个起始顶点可以成为另一个起始顶点路径的一部分,那么您可能不会在潜在的起始顶点处折断,而是这样做:
g.V(1343).store('x').
repeat(__.in().where(without('x')).aggregate('x')).
emit(hasLabel('label')).
path()