如何在gremlin中为空遍历添加默认值?

如何在gremlin中为空遍历添加默认值?,gremlin,Gremlin,我正在处理一个gremlin查询,它沿着多条边进行导航,最终生成一个字符串。根据图形内容,此遍历可能为空。如果遍历结果为空,我希望返回一个默认值 以下是我目前正在做的事情: GraphTraversal遍历=g.traversal().V()。 // ... 这里的导航相当复杂。。。 //最终,我们到达目标顶点并使用其名称 .价值观(“名称”) //由于我们不知道目标顶点是否存在,让我们添加一个默认顶点 .工会( identity(),//如果我们找到了想要保留的东西 常量(“”//默认为空字符

我正在处理一个gremlin查询,它沿着多条边进行导航,最终生成一个
字符串
。根据图形内容,此遍历可能为空。如果遍历结果为空,我希望返回一个默认值

以下是我目前正在做的事情:

GraphTraversal遍历=g.traversal().V()。
// ... 这里的导航相当复杂。。。
//最终,我们到达目标顶点并使用其名称
.价值观(“名称”)
//由于我们不知道目标顶点是否存在,让我们添加一个默认顶点
.工会(
identity(),//如果我们找到了想要保留的东西
常量(“”//默认为空字符串
)
//为了确保我们没有使用默认值,如果我们有一个值。。。
.order().by(s->((字符串)s).length(),order.decr)
.限额(1)
这个查询有效,但它相当复杂-如果遍历最终没有找到任何东西,我只需要一个默认值


有人有更好的建议吗?我唯一的限制是它必须在gremlin本身内完成,即结果必须是类型
GraphTraversal

您可能可以以某种方式使用
coalesce()

gremlin> g.V().has('person','name','marko').coalesce(has('person','age',29),constant('nope'))
==>v[1]
gremlin> g.V().has('person','name','marko').coalesce(has('person','age',231),constant('nope'))
==>nope

如果您有更复杂的逻辑来确定是否发现了什么,则考虑<代码>选择()>代码>步骤.< /p> ,您可以在某种程度上使用<代码> CuuleSeCe()/<代码>:

gremlin> g.V().has('person','name','marko').coalesce(has('person','age',29),constant('nope'))
==>v[1]
gremlin> g.V().has('person','name','marko').coalesce(has('person','age',231),constant('nope'))
==>nope

如果你有更复杂的逻辑来确定是否找到了一些东西,那么就考虑<代码>选择()/代码>步骤。< /P>代码>合并代码< /代码> SouLDS就像一个伟大的想法!谢谢<代码>合并应该是个好主意!谢谢