在 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的主要内容,如果未能解决你的问题,请参考以下文章