Gremlin 如何为图形中缺少并在project()步骤中查询的属性设置默认值或返回空值

Gremlin 如何为图形中缺少并在project()步骤中查询的属性设置默认值或返回空值,gremlin,Gremlin,关于先前提出的这一问题: 有没有更有效的方法来做同样的事情,或者最好在最新的gremlin版本中返回“null”,因为每个合并步骤需要2次额外的遍历?gremlin不会有一个null遍历器被释放的概念(目前没有发布时间表)。以下是3.5.0的一些预期示例: gremlin> g = TinkerGraph.open().traversal() ==>graphtraversalsource[tinkergraph[vertices:0 edges:0], standard] grem

关于先前提出的这一问题:
有没有更有效的方法来做同样的事情,或者最好在最新的gremlin版本中返回“null”,因为每个合并步骤需要2次额外的遍历?

gremlin不会有一个
null
遍历器被释放的概念(目前没有发布时间表)。以下是3.5.0的一些预期示例:

gremlin> g = TinkerGraph.open().traversal()
==>graphtraversalsource[tinkergraph[vertices:0 edges:0], standard]
gremlin> g.addV('person').property('name','allen')
==>v[0]
gremlin> g.V().has('person','name','allen').project('name','age').by('name').by('age')
==>[name:allen,age:null]
gremlin> g.V().has('person','name','allen').elementMap()
==>[id:0,label:person,name:allen]
gremlin> g.V().has('person','name','allen').elementMap('name','age')
==>[id:0,label:person,name:allen]
gremlin> g.V().has('person','name','allen').values('name','age')
==>allen
gremlin> g.V().has('person','name','allen').union(values('name'),values('age'))
==>allen
gremlin> g.V().has('person','name','allen').union(values('name'),coalesce(values('age'),constant(null)))
==>allen
==>null
使用
coalesce()
应该不会有太多的效率损失,即使您必须使用很多。
constant()
的成本不是一个问题,
values(String)
假设这就是您所做的一切,那么它将编译成一个快速的
TokenTraversal
。我想最大的损失是打字太多了。我不知道有任何图形数据库(可能是因为它基于关系后端?)支持默认值,因为大多数数据库都没有模式的概念