neo4j: установка apo c .create.uuid () снаружи вызывает замену - PullRequest
0 голосов
/ 16 июня 2020

Извините, я точно не знаю, какой заголовок мне поставить. Используйте запрос ниже для объяснения.

       UNWIND $data as data
       MERGE (d:Device {cell_id: data.cell_id})
       ON CREATE SET d+= data
       WITH d
       SET d._uuid = apoc.create.uuid()
       MERGE (g:Device_Group {group_name: $GROUP_NAME})
       WITH g,d
       MERGE (g)-[:GROUPS]->(d)

Данные ячеек, которые я получаю, часто обновляются, а иногда добавляются новые устройства. Я также хочу установить UUID для каждого соответствующего устройства. Поэтому я использую apo c .create.uuid (). Однако при обновлении устройства создается новый uuid, который заменяет старый. Моя проблема в том, что я не хочу, чтобы UUID менялся каждый раз при обновлении устройства.

Заранее спасибо за помощь.

1 Ответ

1 голос
/ 16 июня 2020

Вы можете переместить набор UUID внутрь ON CREATE SET, чтобы он только добавлял UUID при создании узла и игнорировал его при обновлении узла.

UNWIND $data as data
MERGE (d:Device {cell_id: data.cell_id})
ON CREATE SET 
    d+= data,
    d._uuid = apoc.create.uuid()
WITH d
MERGE (g:Device_Group {group_name: $GROUP_NAME})
WITH g,d
MERGE (g)-[:GROUPS]->(d)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...