繁体   English   中英

在 Neo4j 中,如何在一个节点与其他节点的集合之间创建关系?

[英]In Neo4j how can I create relationships between one node an a collection of other nodes?

我有一个图表,其中包含一些带有:SubSystem标签的节点。 我想添加一个带有:Document label 的新节点,并与每个现有的:SubSystem SubSystem 节点创建关系。

当我执行此语句时:

MATCH (s:SubSystem)
CREATE (d:Document {title:'New Document'})
CREATE (d)-[:DEPICTS]->(s);

当 Neo4j 为每个:SubSystem SubSystem 创建一个新的:Document节点时,我感到很惊讶。 我有 12 个子系统,所以我最终得到了 12 个新文档,每个文档都与一个子系统相关。 如果我写的话,我会预料到这种行为:

MATCH (s:SubSystem)
CREATE (:Document {title:'New Document'})-[:DEPICTS]->(s);

但我期望分离CREATE子句会创建 1 个文档,然后在该文档和每个子系统之间创建关系。

有人可以解释为什么这不能像我预期的那样工作。

编辑:

我找到了解决方案。 这个声明做了我想要的,但我仍然认为我最初的尝试应该奏效。

CREATE (d:Document {title:'New Document'})
WITH d MATCH (s:SubSystem) CREATE (d)-[:DEPICTS]->(s);

MATCH子句生成一个或多个结果行(如果未找到结果,则中止查询)。 随后的读/写子句将每行执行一次。 正如您所做的那样,重新排列子句的顺序是解决该问题的一种方法(如果可能)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM