Tinkerpop3 / Гремлин. Найдите (A) Upsert (B) добавьте край A к B

Я ищу функциональность upsert в Gremlin.

У клиентской программы есть поток (personId, favoriteMovieNodeId), который должен запросить идентификатор FavoriteMovieNodeId, затем выполнить UPSERT для вершины человека и создать край [favouriteMovie].

это создаст повторяющиеся узлы Person:

g.V().has(label,'movies').has('uid',$favoriteMovieNodeId).as('fm')
.addV('Person').property('personId', $personId).addE('favMovie').to('fm')

Есть ли способ проверить наличие узла на основе свойств перед добавлением узла? Кажется, я не могу найти документацию по этой очень простой графической функции, которая является частью каждого базового графа db.


person Azeli    schedule 05.02.2017    source источник


Ответы (1)


Если фильм существует гарантированно, то он:

g.V().has('movies','uid',$favoriteMovieNodeId).as('fm').
  coalesce(V().has('Person','personId', $personId),
           addV('Person').property('personId', $personId)).
  addE('favMovie').to('fm')
person Daniel Kuppitz    schedule 05.02.2017