我在不久前创建了图形数据库,但我发现我的Person节点没有ID。是否可以为现有节点生成唯一的ID?当我使用neo4j浏览器时,我看到有一个自动生成的图形视图ID,但该ID不在数据库中。让我知道一个Cypher查询是否可以做这样的事情:
MATCH (p:Person) WHERE NOT p.id SET p.id = AUTO_GEN_ID RETURN p
所以新的节点会被修改
h4cxqtbf1#
所有节点都有一个自动生成的“本机ID”(可以通过ID函数获得),但是如果原始节点被删除,该本机ID可以重新用于另一个节点。为了避免混淆,如果您需要一个唯一的ID,最好添加您自己的属性(例如,id或uuid)。您可以使用apoc.create.uuid创建UUID。举例来说:
id
uuid
MATCH (p:Person) WHERE NOT EXISTS(p.id) SET p.id = apoc.create.uuid() RETURN p
APOC库还可以在创建具有指定标签的节点时自动为给定属性分配UUID。
apoc.create.uuid()在Neo4j 5.0中被弃用,并由Cypher函数randomUUID()取代
apoc.create.uuid()
wnrlj8wa2#
你可以通过你正在使用的语言传递和'唯一'的id,只是为你的技术查找uuid。为了100%确定代码是唯一的,你必须预先生成它们,或者有线程安全的计数器。
2条答案
按热度按时间h4cxqtbf1#
所有节点都有一个自动生成的“本机ID”(可以通过ID函数获得),但是如果原始节点被删除,该本机ID可以重新用于另一个节点。为了避免混淆,如果您需要一个唯一的ID,最好添加您自己的属性(例如,
id
或uuid
)。您可以使用apoc.create.uuid创建UUID。举例来说:
APOC库还可以在创建具有指定标签的节点时自动为给定属性分配UUID。
Neo4j 5.x+
apoc.create.uuid()
在Neo4j 5.0中被弃用,并由Cypher函数randomUUID()取代wnrlj8wa2#
你可以通过你正在使用的语言传递和'唯一'的id,只是为你的技术查找uuid。
为了100%确定代码是唯一的,你必须预先生成它们,或者有线程安全的计数器。