【问题标题】:Neo4j - Match then merge statement with a relationship not creating new nodesNeo4j - 匹配然后合并语句与不创建新节点的关系
【发布时间】:2020-03-18 21:48:30
【问题描述】:

当我尝试添加带有标签的新节点(PhoneName)但与现有节点的关系尚不存在时,节点和关系不会被创建。

这是一个存在关系的前后状态:

MATCH (n:Identity)-[a:ATTR]->(attr) RETURN *

这是变异查询:

MATCH (n:Identity {id:'4a028061-8dde-4f64-80c9-ae048e3f81fc'})
MERGE (n)-[na:ATTR]->(name:Name {val: 'John Smith'})
MERGE (n)-[pa:ATTR]->(p:Phone {val:2326410083})
RETURN *

我知道这个问题类似于Neo4J - Merge statement not creating new nodes with a relationship,但就我而言,我在节点上使用过滤器。我错过了什么?

【问题讨论】:

    标签: neo4j cypher


    【解决方案1】:

    看起来您尝试匹配的 :Identity 节点在图中不存在。

    从您的查询中,您正在寻找一个标识节点,其 id 为:'4a028061-8dde-4f64-80c9-ae048e3f81fc',但在您提供的图形图像中,如果我们假设截断标题是身份节点,我们可以知道它以:'44b7'开头

    现在可能是您尝试匹配的节点确实存在,但没有任何传出的 :ATTR 关系(这可以解释为什么您的查询不会返回它),但这尚未得到证实。您的图中是否存在 id:'4a028061-8dde-4f64-80c9-ae048e3f81fc' 的节点?您还没有向我们展示这一点,如果不存在这样的节点,则匹配将失败,然后就没有剩余的 MERGE 可以在其上执行的行了。

    【讨论】:

    • 你是对的。我刚才检查了三次,发现一个字符从 ID 中掉了出来。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多