Обновление свойств с помощью Gremlin

Я использую python и AWS Neptune.

Я использую шаблон "upsert" по идентификатору:

g.V().has(node_type,'id',node.id).fold()
.coalesce(__.unfold(),__.addV('node_type').property('id',node.id)).
property('property','first').next()

Действительно, вершина добавляется (или выбирается из графа) с добавленным свойством. Теперь я хочу добавить еще два свойства, которые я не могу добавить:

  1. Я хочу добавить свойство "макс". Если у вершины есть свойство, я хочу взять его максимальное значение и значение «10» (например). Пытался добавить в свой запрос следующий оператор, но он не работает:

    property('time_max', __.max(__.values('max'), 10))

    Но я получаю исключение: «Не удалось найти метод: DefaultGraphTraversal.max».

  2. Еще одно свойство, которое таким же образом увеличивает «счетное» свойство. У меня такое же исключение по методу «мешок».

Как можно добавить эти свойства? Единственный способ - получить вершину и затем зафиксировать ее? Я хочу, чтобы это было максимально эффективно.

Спасибо!


person Shkolar    schedule 07.05.2020    source источник
comment
Я дал ответ на max вопрос. В чем проблема с sack?   -  person Kelvin Lawrence    schedule 07.05.2020
comment
Я заменил max на сумму, и это сработало! Спасибо!   -  person Shkolar    schedule 08.05.2020


Ответы (1)


Шаг max () используется для поиска максимального значения в потоке или коллекции, как в этом простом примере:

gremlin> g.inject(1,2,3).max()
==>3  

Вместо этого вы могли бы сделать что-то вроде этого

union(values('max'),constant(10)).max()
person Kelvin Lawrence    schedule 07.05.2020