Neo4j中id的自动生成

Neo4j中id的自动生成,neo4j,Neo4j,Neo4j是否会自动为使用“CREATE”查询创建的所有节点生成唯一id,如Mysql中的“id”?我们创建了一个具有 CREATE (n: user{name:"x", age:10}) return n 如果我们想更新'name'属性,如何在Neo4j中更新?有一个内部id,您可以通过id()函数访问它 CREATE (n:User {name="x", age: 10}) RETURN n, id(n) as nodeId 稍后,您可以使用 MATCH (n) WHERE id(n)

Neo4j是否会自动为使用“CREATE”查询创建的所有节点生成唯一id,如Mysql中的“id”?我们创建了一个具有

CREATE (n: user{name:"x", age:10}) return n

如果我们想更新'name'属性,如何在Neo4j中更新?

有一个内部id,您可以通过
id()
函数访问它

CREATE (n:User {name="x", age: 10}) RETURN n, id(n) as nodeId
稍后,您可以使用

MATCH (n) WHERE id(n) = 12345 SET n.name = "y"

但从文件上看

可以使用谓词中的id()函数按id搜索节点

删除节点和关系时,Neo4j重用其内部ID。这意味着使用和依赖内部Neo4j ID的应用程序很脆弱,或者有出错的风险。因此,建议使用应用程序生成的ID

正如他们所说,最好使用应用程序生成的ID,这些ID存储为节点的属性。您需要在创建节点时设置应用程序生成的id,然后在合并语句中使用该键

MERGE (n:user{key:<myApplicationKey>}) return n
SET n.name="x", age=10
MERGE(n:user{key:})返回n
设置n.name=“x”,年龄=10岁

使用内部id通常被认为是一种不好的做法,因为当删除相应的节点/关系时,可以重用这些id。只在同一查询/事务的范围内使用内部ID是安全的。