Cypher:如果节点不存在,则创建多个节点和关系

问题描述 投票:0回答:1

我想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))

我相信ON CREATE仅适用于SET,但如上所述,我需要执行多个语句。是否可以使用ON CREATE子句创建多个节点和关系?

编辑:我已经尝试过ON CREATE FOREACH(ignoreme in case when event.article is not null then [1] else [] end |... multiple statements,但这不能逃避SET问题。

neo4j cypher graph-databases cql
1个回答
0
投票

这是执行此操作的最佳方法:只需将其包装在FOREACH语句中

MATCH (a: Article {URL: event.URL})
FOREACH(ignoreme in case when a is not null then [1] else [] end |... Statement here...)
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.