Клонируйте Край и целевую вершину в Космос Гремлин - PullRequest
0 голосов
/ 17 июня 2019
g.AddV('test').property('id','1').property('name','test 1')
g.AddV('test').property('id','2').property('name','test 2')

g.V('1').AddE('owns').to(g.AddV('another').property('id','3'))

Можно ли как-нибудь клонировать этот owns край и его целевую another вершину test 1 со всеми свойствами в test 2 вершину?Это просто пример данных.У меня есть вершина с как минимум 10 свойствами.

ПРИМЕЧАНИЕ : запрос должен поддерживать cosmos db gremlin api.

Ответы [ 2 ]

1 голос
/ 17 июня 2019

Ответ на этот вопрос в основном представлен в другом вопросе StackOverflow, в котором объясняется, как клонировать вершину и все ее ребра .Поскольку этот вопрос немного отличается, я решил немного его адаптировать, предложив закрыть его как дубликат.

gremlin> g.V().has('test','name','test 1').as('t1').
......1>   outE('owns').as('e').inV().as('source').
......2>   V().has('test','name','test 2').as('target').
......3>   sideEffect(       
......4>     select('source').properties().as('p').
......5>     select('target').
......6>       property(select('p').key(), select('p').value())).
......7>   sideEffect(
......8>     select('t1').
......9>     addE(select('e').label()).as('eclone').
.....10>       to(select('target')).
.....11>     select('e').properties().as('p').                        
.....12>     select('eclone').
.....13>       property(select('p').key(), select('p').value()))
==>v[3]
gremlin> g.E()
==>e[8][0-owns->6]
==>e[10][0-owns->3]
gremlin> g.V().valueMap(true)
==>[id:0,label:test,name:[test 1],id:[1]]
==>[id:3,label:test,name:[test 2],id:[3]]
==>[id:6,label:another,id:[3]]

Обратите внимание, что, поскольку метки неизменны, вы застряли с меткой вершины, являющейся «другим».«учитывая, как вы выложили свои данные образца.Кроме того, я знаю, что это просто пример данных, но учтите, что перегрузка «id» не является хорошим выбором, поскольку может привести к путанице с T.id.

0 голосов
/ 17 июня 2019

Выполнить API: g.V().has('name','test 1').id()

enter image description here

Затем попробуйте зациклить результаты в Java-коде и выполнить API-интерфейс add edge:

g.V(<the id of vertex loop>).AddE('owns').to(<the id of vertex 'test2'>)

Если вершины теста 2 кратны, то вы можете сделать двумерный цикл.

...