Gremlin中project()步骤属性缺失时如何返回默认值?
解决Gremlin Project步骤中属性缺失报错的问题
这个问题我平时做Gremlin图查询时碰到过好多次,其实有几个很实用的小技巧能让by()步骤在属性缺失时返回null或空值,完美避开报错,给你详细说下:
方法1:用coalesce()指定默认值
coalesce()会依次执行传入的多个步骤,返回第一个有结果的步骤输出。我们可以把values('a')放在前面,后面跟上constant(null)(或者你想要的默认值),这样属性不存在时就会返回null:
g.V('t1').project('a').by(coalesce(values('a'), constant(null)))
如果希望返回空字符串而不是null,只需要把constant(null)换成constant('')就行。
方法2:用optional()简化处理
optional()专门用来处理“可选”的步骤场景——如果包裹的步骤有结果就返回结果,没有结果就返回null,写法更简洁:
g.V('t1').project('a').by(optional(values('a')))
这个方法特别适合只需要简单判断属性是否存在,不需要自定义其他默认值的情况。
测试验证
用这两种方法分别查询t1和t2:
- 查询
t1会返回{"a": null}(或你设置的默认值) - 查询
t2会正常返回{"a": 1}
完全不会再出现属性缺失导致的报错问题。
内容的提问来源于stack exchange,提问作者Vasar
相关产品推荐
相关产品推荐

