Как создать и обновить узлы и свойства с помощью простого шифрового запроса? - PullRequest
0 голосов
/ 30 марта 2020

Как создать и обновить узлы и свойства с помощью простого шифрового запроса?

Ниже приведен мой запрос:

MERGE (c:contact {guid : '500010'})
ON CREATE SET
    c.data_source = '1',
    c.guid = '500010',
    c.created = timestamp()
ON MATCH SET
    c.lastUpdated = timestamp()
MERGE (s:speciality {specialtygroup_desc : 'cold'})
ON CREATE SET s.data_source = '1',
    s.specialtygroup_desc = 'fever',
    s.created = timestamp()
ON MATCH SET s.data_source = '1',
    s.specialtygroup_desc = 'comman cold',
    s.lastUpdated = timestamp()
MERGE (c)-[r:is_specialised_in]->(s)
ON CREATE SET
    r.duration = 1
ON MATCH SET
    r.duration = r.duration + 1

При первом запуске узел создается как "лихорадка". На втором запуске я обновил specialty_group на "простуду". Но это создание нового узла с «лихорадкой». Я не могу обновить «жар» до «простуды». Какие изменения я должен внести в приведенный выше запрос?

Ответы [ 2 ]

0 голосов
/ 13 апреля 2020

Я думаю, что вы хотите обновить все узлы "простуда" до "простуда" и, если не существует "простуда" или "простуда", создать новую "лихорадку"? Мое предложение:

OPTIONAL MATCH (ss:speciality {specialtygroup_desc : 'cold'}
SET ss.specialtygroup_desc='common cold', ss.lastUpdated = timestamp()
MERGE (c:contact {guid : '500010'})
ON CREATE SET
    c.data_source = '1',
    c.guid = '500010',
    c.created = timestamp()
ON MATCH SET
    c.lastUpdated = timestamp()
MERGE (s:speciality {specialtygroup_desc : 'common cold'})
ON CREATE SET s.data_source = '1',
    s.specialtygroup_desc = 'fever',
    s.created = timestamp()

MERGE (c)-[r:is_specialised_in]->(s)
ON CREATE SET
    r.duration = 1
ON MATCH SET
    r.duration = r.duration + 1
0 голосов
/ 30 марта 2020

Предложение MERGE (s:speciality {specialtygroup_desc : 'cold'}) ищет значение specialtygroup_desc "cold".

Во время первого выполнения это предложение MERGE не находит "холодный" узел - поэтому он создает его, и последующее предложение ON CREATE меняет его на «лихорадка».

Во время второго выполнения этот MERGE снова не находит «холодный» узел (так как теперь он является «лихорадочным» узлом), поэтому он снова создает «холодный» узел, а предложение ON CREATE снова меняет его на «жар». Предложение ON MATCH никогда не используется. Вот почему вы в конечном итоге получаете еще один «лихорадочный» узел.

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

...