![](/img/trans.png)
[英]Following edges who's properties match one on the source vertex with Gremlin
[英]How to copy edges from one vertex to a new vertex in Gremlin
背景:我嘗試將這個問題用作基線,但是因為我使用的是Cosmos,並且場景稍有不同,所以我無法使其工作。
我想知道在CosmosDb Gremlin中是否可以將所有邊(從內到外)從一個頂點復制到新頂點。 原因是我使用用戶名作為分區鍵,例如User-User123,在Cosmos DB中,一旦設置便無法更改。
這個想法是,如果用戶想將用戶名從User123更改為User123db,
使用下面的tinkerpop圖,如何創建一個具有marko2名稱的新頂點,並將所有從marko入內和出入的邊指向新marko2頂點,然后刪除舊的marko。
感謝任何可以幫助您的人=)
我猜問題是使用addE(<traversal>)
..? 至少在純TinkerPop 3.2環境中,這就是失敗的原因。 由於無法在TP 3.2中動態設置邊緣標簽,因此您必須知道所有可能的邊緣標簽(從用戶頂點進出),並分別處理每個邊緣標簽。
基於鏈接答案的原始遍歷:
g.V(4).as('source').
addV().
property(label, select('source').label()).as('clone').
sideEffect( // copy vertex properties
select('source').properties().as('p').
select('clone').
property(select('p').key(), select('p').value())).
sideEffect( // copy knows out-edges
select('source').outE('knows').as('e').
select('clone').
addE('knows').as('eclone').
to(select('e').inV()).
select('e').properties().as('p'). // copy knows out-edge properties
select('eclone').
property(select('p').key(), select('p').value())).
sideEffect( // copy knows out-edges
select('source').outE('knows').as('e').
select('clone').
addE('knows').as('eclone').
to(select('e').inV()).
select('e').properties().as('p'). // copy knows out-edge properties
select('eclone').
property(select('p').key(), select('p').value())).
sideEffect( // copy created out-edges
select('source').outE('created').as('e').
select('clone').
addE('created').as('eclone').
to(select('e').inV()).
select('e').properties().as('p'). // copy created out-edge properties
select('eclone').
property(select('p').key(), select('p').value())).
sideEffect( // copy knows in-edges
select('source').inE('knows').as('e').
select('clone').
addE('knows').as('eclone').
from(select('e').outV()).
select('e').properties().as('p'). // copy knows in-edge properties
select('eclone').
property(select('p').key(), select('p').value()))
因此,您基本上只sideEffect
為每個邊緣標簽(每個方向)添加一個sideEffect
步驟。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.