Можем ли мы использовать MERGE в Cypher для обновления свойства узла?

1

Я собираю набор данных в neo4j-граф и написал для него скрипт python, используя py2neo, через который я выполняю запросы cypher.

Рассмотрим ситуацию, когда у меня есть узел типа "item" со свойствами "type" и "count" и позволяет сказать, что у меня есть 5 разных типов элементов.

Мой скрипт выполняет итерацию по набору данных, и это то, что он делает:

  1. Проверяет, существует ли "элемент" этого типа.
  2. (a) Если существует, то извлекает его "счет", увеличивает его на 1 и обновляет значение свойства. (b) Если не существует, то создайте узел "item" текущего "типа" и присвойте ему "счет" 1. Я до сих пор не использую MERGE.

Я знаю, что отдельные шаги 1 и 2 (б) могут быть сбиты с помощью MERGE. Это означает, что cypher будет проверять шаблон

(n:item{type:"detergent", count:1})

И если он не существует, он будет создан.

То, что я хочу знать от мастеров cypher, заключается в том, могу ли я использовать MERGE для обновления значения свойства? В частности, если после 10 итераций через набор данных, если количество моющих средств стало 4, из процедуры, которую я использую прямо сейчас, могу ли я заменить эту процедуру на использование MERGE, чтобы решить следующую цель:

1) если моющее средство появляется на итерации, cypher должен создать узел для моющего средства со счетчиком 1, если узел для моющего средства не существует.

2) если моющее средство появляется на итерации, cypher должен увеличить свойство count на 1, если узел для моющего средства уже существует.

Теги:
neo4j
cypher
merge

1 ответ

2
Лучший ответ

Не могли бы вы попробовать:

MERGE (n:item{type:"detergent") 
ON CREATE SET n.count=1 
ON MATCH SET n.count=n.count+1

ON CREATE: когда узел не существует ON MATCH: когда узел находится на графике

Надеюсь помочь.

  • 0
    Отлично :) Спасибо ..!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню