在格林姆林重复

问题描述

与gremlin相关的两个查询如下:

  1. 要在重复条件检查期间满足条件时停止遍历。
g.V().has('label_','A')).emit().repeat(inE().outV()).until(has('stop',1)).project('depth','values').by(valueMap('label_','stop'))

当重复语句期间遇到的节点的stop等于1时,我希望查询停止返回更多值。但是查询不会停止并返回所有记录。 需要输出

=>{label_='A',stop=0}
=>{label_='B',stop=0}
=>{label_='C',stop=1}
  1. 查询以以下格式返回遍历值,考虑它们之间是否存在边。将图形视为A-> E1-> B-> E2-> C。输出必须如下所示
=> A,E1,B
=> B,E2,C

A,B,C,E1,E2分别表示属性,其中起始节点是

解决方法

对于第一部分,看来您是在向内而不是在外遍历这是故意的吗?如果是这样,请将重复中的out()替换为in

g.V().has(label,'A').emit().
  repeat(out()).until(has('stop',1)).
  project('label','stop').
    by(label).
    by(values('stop'))

示例:https://gremlify.com/ma2xkkszkzr/1

对于第二部分,我仍然不确定您是什么意思,如果您只是想让所有边缘都露出来并且您可以使用elementMap

g.E().elementMap()

示例:https://gremlify.com/ma2xkkszkzr/4

,如果不支持,则可以执行以下操作:

g.E().local(union(
      outV(),identity(),inV()
    ).label().fold())

示例:https://gremlify.com/ma2xkkszkzr/2