neo4j为现有节点生成唯一ID

35g0bw71  于 12个月前  发布在  其他
关注(0)|答案(2)|浏览(215)

我在不久前创建了图形数据库,但我发现我的Person节点没有ID。是否可以为现有节点生成唯一的ID?当我使用neo4j浏览器时,我看到有一个自动生成的图形视图ID,但该ID不在数据库中。
让我知道一个Cypher查询是否可以做这样的事情:

MATCH (p:Person) 
WHERE NOT p.id
SET p.id = AUTO_GEN_ID
RETURN p

所以新的节点会被修改

h4cxqtbf

h4cxqtbf1#

所有节点都有一个自动生成的“本机ID”(可以通过ID函数获得),但是如果原始节点被删除,该本机ID可以重新用于另一个节点。为了避免混淆,如果您需要一个唯一的ID,最好添加您自己的属性(例如,iduuid)。
您可以使用apoc.create.uuid创建UUID。举例来说:

MATCH (p:Person) 
WHERE NOT EXISTS(p.id)
SET p.id = apoc.create.uuid()
RETURN p

APOC库还可以在创建具有指定标签的节点时自动为给定属性分配UUID。

Neo4j 5.x+

apoc.create.uuid()在Neo4j 5.0中被弃用,并由Cypher函数randomUUID()取代

wnrlj8wa

wnrlj8wa2#

你可以通过你正在使用的语言传递和'唯一'的id,只是为你的技术查找uuid。
为了100%确定代码是唯一的,你必须预先生成它们,或者有线程安全的计数器。

相关问题