首页 > 解决方案 > neo4j - 不将关系链接到已创建的节点

问题描述

我正在使用 Neo4j 服务器版本:3.4.4(企业版)和 Neo4j 浏览器版本:3.2.5。

当我运行这些命令时:

create (a:DVK {Naam : 'A'}) -[:IS_PROJECT_FOR]->(:DVL {Naam : 'C'})
create (a) -[:IS_PROJECT_FOR]->(:DVL {Naam : 'B'})

我创建了 4 个节点:A、B、C 和另一个节点,以及 2 个关系。我期待有 3 个节点:A、B、C 有 2 个关系。

你能告诉我我做错了什么并建议如何解决这个问题吗?

标签: neo4j

解决方案


根据对主要问题的评论,您似乎分别执行了每个查询,而不是在单个查询中一起执行。

请记住,变量不会保存到数据库中,并且仅在单个查询期间存在(如果由于未包含在查询中的 WITH 子句中而超出范围,则有时会更少)。

因此,对于第二个查询:

create (a) -[:IS_PROJECT_FOR]->(:DVL {Naam : 'B'})

执行 this 时范围内没有任何内容,因此ahere 不会引用a上一个查询中的变量。相反,由于这是a查询的第一次使用,它将绑定到一个新创建的空白节点(没有标签,没有属性),并且将使用提供的属性创建一个 :DVL 节点,然后是 :IS_PROJECT_FOR增加了它们之间的关系。

如果这两个创建是在同一个查询中执行的,那么a从第一个创建开始仍然在范围内,并且该节点将是执行第二个创建时使用的节点。


推荐阅读