我正在建立一个长遍历,以在一个查询中添加数百个顶点。我从官方网站上看到,推荐的方法是注入对象列表并在其中添加顶点:http://tinkerpop.apache.org/docs/current/recipes/#long-traversals
但是,在我的情况下,有很多具有可选字段的对象,以官方文档中的示例为例,可能有些人没有'age'属性或'name'属性,我可以使用select做这样的事情:
g.inject().unfold().as('a').addV().choose(select('a').select('age'), property('age', select('a').select('age')))
但是Neptune中的select步骤没有优化,这增加了查询的延迟,是否还有其他解决方案?
答案 0 :(得分:1)
已经在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]]