我想定义一个Gremlin查询,该查询以递归方式返回所有节点,直到没有更多可用节点为止:
Node: ProductionEvent
Node: Product
到目前为止,我已经尝试了以下方法...但是,我不确定输出是否正确。另外,是否可以使用tree()函数将其打印出来?我可以将重复功能与Times函数一起使用以获取所有节点吗?
g.V().hasLabel('ProductionEvent').
repeat(__.outE('consumes').simplePath()).times(3).
emit().dedup()
我期望这样的输出
Product1: consumed <--- ProductionEvent1 --> produced :Product2: consumed <--- ProductionEvent2 --> produced :Product3
答案 0 :(得分:0)
我取得了满意的结果。查询是
g.V().hasLabel('ProductionEvent').has('orderID', 'XYZ')
.repeat(__.out('consumes').in_('produces').simplePath()).emit().times(5)
.dedup().limit(6).next()
根据我的理解,如果提前知道结果数,则limit()
和times()
对于缩短查询执行时间是必需的。并且simplepath()
确保不再访问已访问的路径。