在 CREATE 和 MATCH 之间需要 Neo4j Cypher WITH

Posted

技术标签:

【中文标题】在 CREATE 和 MATCH 之间需要 Neo4j Cypher WITH【英文标题】:Neo4j Cypher WITH is required between CREATE and MATCH 【发布时间】:2014-02-13 09:09:31 【问题描述】:

我想在浏览器控制台上同时执行几个查询,这是我的请求:

CREATE (newNode1:NEW_NODE)
CREATE (newNode2:NEW_NODE)
MATCH (n1:LABEL_1 id: "node1") CREATE (newNode1)-[:LINKED_TO]->(n1)
MATCH (n2:LABEL_2 id: "node2") CREATE (newNode2)-[:LINKED_TO]->(n2)

当我一个一个执行它们时没有问题,但是当我同时执行它们时,我收到以下错误: CREATE 和 MATCH 之间需要 WITH

有什么办法可以改正吗?

【问题讨论】:

【参考方案1】:

添加几个 WITH?

CREATE (newNode1:NEW_NODE)
CREATE (newNode2:NEW_NODE)
WITH newNode1, newNode2
MATCH (n1:LABEL_1 id: "node1") 
CREATE (newNode1)-[:LINKED_TO]->(n1)
WITH newNode1, newNode2
MATCH (n2:LABEL_2 id: "node2") 
CREATE (newNode2)-[:LINKED_TO]->(n2)

或者,您可以以不同的顺序执行此操作并避免使用 WITH,不同之处在于如果 n1/n2 不匹配,它将不会创建任何内容。

MATCH (n1:LABEL_1  id: "node1" ) 
MATCH (n2:LABEL_2  id: "node2" ) 
CREATE (newNode1:NEW_NODE)-[:LINKED_TO]->(n1) 
CREATE (newNode2:NEW_NODE)-[:LINKED_TO]->(n2)

【讨论】:

最后,我使用了您指出的相同方法。我在创作之前写下了我所有的比赛。我认为有一些东西可以分开两个查询,但没有找到。谢谢!

以上是关于在 CREATE 和 MATCH 之间需要 Neo4j Cypher WITH的主要内容,如果未能解决你的问题,请参考以下文章

Neo4j-cypher语言

Neo4j CQL |create &merge

Neo4j CQL |create &merge

从只有 MATCH 和 CREATE 关系的 Cypher LOAD CSV 中删除 EAGER

Neo4j基本操作

Neo4j:如何删除与 cypher 的特定关系?