Как избежать дублирования ребер между двумя вершинами в Gremlin Apache Tinker Pop?
Как избежать дублирования
edge
между двумя вершинами в
Gremlin apache Tinker pop
?
A ->(has) -> B
край с такой же этикеткой
HAS
не должны дублироваться.
1 ответ
Один простой способ гарантировать уникальность - использовать составной идентификатор для каждого ребра, который состоит из идентификатора исходной вершины, метки ребра и идентификатора конечной вершины. Это гарантирует, что попытка добавить еще одно ребро между двумя вершинами с одинаковой меткой вызовет ошибку (поскольку каждая вершина и ребро в TinkerPop должны иметь уникальный идентификатор).
gremlin> g.addV('vertex').property(id,'v1').as('a').
... addV('vertex').property(id,'v2').as('b').
... addE('HAS').property(id,'v1-HAS-v2').from('a').to('b')
==>e[v1-HAS-v2][v1-HAS->v2]
gremlin> g.addE('HAS').property(id,'v1-HAS-v2').from(V('v1')).to(V('v2'))
Edge with id already exists: v1-HAS-v2
Type ':help' or ':h' for help.
Display stack trace? [yN]N