在处理可选字段时在 gremlin 中使用 inject 进行长遍历

using inject for long traversal in gremlin when dealing with optional fields

我正在构建一个长遍历以在一个查询中添加数百个顶点。我从官方网站上看到,推荐的做法是注入对象列表并在那里添加顶点:http://tinkerpop.apache.org/docs/current/recipes/#long-traversals

但是在我的例子中,有很多对象有可选字段,以官方文档中的示例为例,可能有人没有 'age' 属性,或者 'name' 属性,我可以使用选择来做这样的事情:

g.inject().unfold().as('a').addV().choose(select('a').select('age'), property('age', select('a').select('age')))

但是 Neptune 中的选择步骤没有优化,这会增加查询的延迟,是否有其他解决方案?

已在 gremlin-users 邮件列表中回复,但为了结束循环,再次在这里:

gremlin> g = TinkerGraph.open().traversal()
==>graphtraversalsource[tinkergraph[vertices:0 edges:0], standard]
gremlin> 
gremlin> data = [["name": "Huimin Yang"],
                 ["name": "Daniel Kuppitz", "age": 37]]
==>[name:Huimin Yang]
==>[name:Daniel Kuppitz,age:37]
gremlin> 
gremlin> g.inject(data).unfold().as("m").
           addV("person").as("v").
           select("m").unfold().as("kv").
           select("v").
             property(select("kv").by(keys), select("kv").by(values)).iterate()
gremlin> 
gremlin> g.V().valueMap()
==>[name:[Huimin Yang]]
==>[name:[Daniel Kuppitz],age:[37]]