Cypher: если узел не существует, создайте несколько узлов и отношений - PullRequest
0 голосов
/ 29 сентября 2019

Я хочу MERGE узел:

MERGE (a: Article {URL: event.URL})

Если узел не существует, мне нужно сделать это:

ON CREATE FOREACH( site_name in CASE WHEN event.site_name is not null then [1] ELSE [] END |
    MERGE (w: Website { value: event.site_name})
    MERGE (w)-[:PUBLISHED]->(a))

    // all of the tag creation
    FOREACH( tag in CASE WHEN event.tags is not NULL then event.tags else [] END |
    Merge (t: Article_Tag {value: tag})
    CREATE (a)-[: HAS_ARICLE_TAG {date:event_datetime}]->(t))

Iсчитаю, что ON CREATE работает только с SET, но, как указано выше, мне нужно выполнить несколько операторов. Есть ли способ создать несколько узлов и отношений с помощью предложения ON CREATE?

РЕДАКТИРОВАТЬ: я пытался ON CREATE FOREACH(ignoreme in case when event.article is not null then [1] else [] end |... multiple statements, но это не решает проблему SET.

1 Ответ

0 голосов
/ 30 сентября 2019

Это лучший способ сделать это: просто оберните его в оператор FOREACH

MATCH (a: Article {URL: event.URL})
FOREACH(ignoreme in case when a is not null then [1] else [] end |... Statement here...)
...