TinkerPop Gremlin 重复直到具有指定标签的节点

TinkerPop Gremlin Repeat until nodes with specified label

在我的图表中有两种类型的标签:ab 以及 boolean 属性 travel_by.

我想执行 BFS(最大深度为 5):从给定节点开始并获取所有带有标签 a 的第一个节点。

我试过这样做:

g.V(<node_to_start_from>).repeat(__.both().has("travel_by", True).simplePath())
.times(5)
.until(__.hasLabel('a')).toList()

但是这个查询卡住了很长时间(即使我改成times(2)

一个常用的方法是使用 loops

g.V(<node_to_start_from>).
  repeat(__.both().has("travel_by", True).simplePath()).
  until(__.hasLabel('a').or().loops().is(5)).
  hasLabel('a').
  toList()

loops 达到 5 的情况下,第二个 has 防止除标签为 'a' 的项目以外的任何项目成为结果的一部分。