我正在使用Gremlin.Net连接到janus数据库,我的问题是关于gremlin我如何执行下一个查询,以防 id = 61464的顶点没有父 即可。它目前爆发。 当我使用这个
g.V(61464).Project<object>("father", "mother", "children").
By(Out("father")).
By(Out("mother")).
By(In("father").Fold()).Next();
如果所选顶点没有父亲查询中断,我该如何避免?
答案 0 :(得分:4)
答案取决于你想要回归什么而不是“父亲”。处理它的一种方法是使用coalesce()
:
gremlin> g.V().project('name','age').
......1> by('name').
......2> by(coalesce(values('age'),constant('none')))
==>[name:marko,age:29]
==>[name:vadas,age:27]
==>[name:lop,age:none]
==>[name:josh,age:32]
==>[name:ripple,age:none]
==>[name:peter,age:35]
project()
步骤要求by()
返回一些内容。如果您想更好地调整结果并放弃不相关的“年龄”属性,您可以过滤预计的Map
:
gremlin> g.V().
......1> project('name','age').
......2> by('name').
......3> by(coalesce(values('age'),constant('none'))).
......4> local(unfold().
......5> filter(select(values).is(P.neq('none'))).
......6> group().
......7> by(keys).
......8> by(select(values).unfold()))
==>[name:marko,age:29]
==>[name:vadas,age:27]
==>[name:lop]
==>[name:josh,age:32]
==>[name:ripple]
==>[name:peter,age:35]