使用Gremlin查询以递归方式获取节点

时间:2019-05-17 14:40:51

标签: gremlin recursive-query janusgraph amazon-neptune

我想定义一个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

1 个答案:

答案 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()确保不再访问已访问的路径。