Как избежать дублирования ребер между двумя вершинами в 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
Другие вопросы по тегам