如何仅在neo4j中不存在的情况下创建节点?

Mar*_*yna 2 neo4j cypher

我需要一个创建实体的查询。我需要类似IF NOT EXISTSSQL 的东西。我检查了 CREATE UNIQUE 命令,但现在已弃用。

Tom*_*nič 8

您可以使用 MERGE 语句仅在图中尚不存在的情况下创建节点。检查文档

MERGE (p:Person{name:"Marina"})
Run Code Online (Sandbox Code Playgroud)

这将搜索带有名称属性“Marina”的标记为 Person 的节点,如果没有找到,它将创建一个具有该标签和名称属性的新节点。

如果您想在原始节点不存在的情况下创建一些其他节点,那么您需要OPTIONAL MATCH.

OPTIONAL MATCH (p:Person{name:"Marina"})
// filter when the "Marina" node doesn't exist yet
WITH p WHERE p IS NULL
...
Run Code Online (Sandbox Code Playgroud)

  • 我认为回答重复的问题不足以被否决。我也不同意这种重复的痴迷。多个问题讨论同一问题真是太好了。很多时候,“原始”问题中没有包含不同的信息和细节。对我来说,无论是否重复,所有问题都是有效的。当您搜索问题及其解决方案时,所使用的术语将引导您找到一个或另一个问题及其答案。如果所有问题(无论是否重复)都有很好的答案,那不是很好吗?我会投票,因为它是有效的。 (14认同)