Можем ли мы использовать MERGE в Cypher для обновления свойства узла? - PullRequest
0 голосов
/ 30 августа 2018

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

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

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

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

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

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

А если его не существует, создаст.

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

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

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

1 Ответ

0 голосов
/ 30 августа 2018

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

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

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

Надежда помогает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...