问题描述
与gremlin相关的两个查询如下:
- 要在重复条件检查期间满足条件时停止遍历。
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}
=> 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())