在 Tinkerpop 中添加属性的 HashMap
Add a HashMap of Properties in Tinkerpop
我有一个属性图,例如:
map[0] = {
("name";"lux");
("lang";"german")
}
map[1]= {
("name";"lux")
}
如您所见,map[1]
没有 属性 "lang"。现在我想添加一个顶点而不对键进行硬编码。
有没有一种方法可以在一个语句中执行此操作而无需循环映射并逐个添加每个 属性。
类似于:
Graph.addV("label").property(T.id, getID()).property(map,key,value);
我使用了基本的 Gremlin 控制台和 TinkerGraph 来生成这个示例,但是在 Gremlin 中表达它应该没有问题 Java。
nodes = [
["name": "Kim", "breed": "Beagle"],
["name": "Max", "breed": "Mixed"],
["name": "Toby", "breed": "Golden Retriever"]]
gremlin> g.inject(nodes).unfold().as("nodes").
......1> addV("test").as("new_node").
......2> sideEffect(select('nodes').unfold().as('kv').
......3> select('new_node').
......4> property( select('kv').by(Column.keys),
......5> select('kv').by(Column.values))).
......6> id().toList()
==>9
==>12
==>15
gremlin> g.V().valueMap().with(WithOptions.tokens)
==>[id:9,label:test,name:[Kim],breed:[Beagle]]
==>[id:12,label:test,name:[Max],breed:[Mixed]]
==>[id:15,label:test,name:[Toby],breed:[Golden Retriever]]
我有一个属性图,例如:
map[0] = {
("name";"lux");
("lang";"german")
}
map[1]= {
("name";"lux")
}
如您所见,map[1]
没有 属性 "lang"。现在我想添加一个顶点而不对键进行硬编码。
有没有一种方法可以在一个语句中执行此操作而无需循环映射并逐个添加每个 属性。
类似于:
Graph.addV("label").property(T.id, getID()).property(map,key,value);
我使用了基本的 Gremlin 控制台和 TinkerGraph 来生成这个示例,但是在 Gremlin 中表达它应该没有问题 Java。
nodes = [
["name": "Kim", "breed": "Beagle"],
["name": "Max", "breed": "Mixed"],
["name": "Toby", "breed": "Golden Retriever"]]
gremlin> g.inject(nodes).unfold().as("nodes").
......1> addV("test").as("new_node").
......2> sideEffect(select('nodes').unfold().as('kv').
......3> select('new_node').
......4> property( select('kv').by(Column.keys),
......5> select('kv').by(Column.values))).
......6> id().toList()
==>9
==>12
==>15
gremlin> g.V().valueMap().with(WithOptions.tokens)
==>[id:9,label:test,name:[Kim],breed:[Beagle]]
==>[id:12,label:test,name:[Max],breed:[Mixed]]
==>[id:15,label:test,name:[Toby],breed:[Golden Retriever]]