Добавить HashMap свойств в Tinkerpop - PullRequest
2 голосов
/ 09 марта 2020

У меня есть карта свойств для примера:

map[0] = {
    ("name";"lux");
    ("lang";"german")
} 
map[1]= {
    ("name";"lux")
}

Как видите, map[1] не имеет свойства "lang". Теперь я хочу добавить вершину без жесткого кодирования ключей.

Есть ли способ, как я могу сделать это в одном операторе без зацикливания карты и добавлять каждое свойство по одному.

Что-то как:

Graph.addV("label").property(T.id, getID()).property(map,key,value);

1 Ответ

3 голосов
/ 09 марта 2020

Я использовал basi c Gremlin Console и TinkerGraph для создания этого примера, но не должно быть проблем с express этим в 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]]   
...