【问题标题】:neo4j generate unique id for existing nodeneo4j 为现有节点生成唯一 ID
【发布时间】:2020-03-18 22:54:47
【问题描述】:

我之前创建了图形数据库,但我发现我的 Person 节点没有 ID。是否可以为现有节点生成唯一 ID?我看到当我使用 neo4j 浏览器时,有一个自动生成的图形视图 ID,但该 ID 不在数据库中。

如果 Cypher 查询可以执行以下操作,请告诉我:

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

所以新节点会被修改?

【问题讨论】:

    标签: neo4j cypher


    【解决方案1】:

    所有节点都有一个自动生成的“native ID”(可以通过ID 函数获得),但是如果原始节点被删除,该native ID 可以重新用于另一个节点。为避免混淆,如果您需要唯一 ID,最好添加您自己的属性(例如,iduuid)。

    您可以使用apoc.create.uuid 创建 UUID。例如:

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

    当创建具有指定标签的节点时,APOC 库还可以automatically assign a UUID 到给定属性。

    【讨论】:

      【解决方案2】:

      您可以通过您正在使用的语言传递和“唯一”id,只需为您的技术查找 uuid。

      要 100% 确保代码是唯一的,您必须预先生成它们或拥有线程安全的计数器。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-22
        • 1970-01-01
        • 1970-01-01
        • 2019-07-06
        • 1970-01-01
        • 2016-10-27
        • 2013-04-28
        • 1970-01-01
        相关资源
        最近更新 更多