Vertex 属性 (ID) 这是一组唯一值

Vertex property (ID) which is a set of unique values

我需要通过一组值 属性 中的每个值来唯一标识并快速到达顶点(即这个 属性 可能有一个顶点的多个值),每个值在所有顶点上都应该是唯一的(即任何 vertex1.id 属性 值(这是一组顶点 ID)与任何其他 vertex2.id 的交集为空,其中 vertex1 != vertex2) ?

这是一个非常强大的功能,具有深远的影响,我找不到哪个 graph-db 引擎具有提供此功能的内置功能。

如果没有这样的内置功能,那么可能有解决方法来实现这种效果?

neo4j 允许您在节点 label/property 上定义一个 Uniqueness Constraint 满足大部分您想要的,除了它定义 "uniqueness" 以应用于整个 [=35] =] 值,而不是该值内的个别项目。后一种要求似乎并不是一个广泛需要的功能,因为几乎所有模型最多只需要一个唯一标识符。

话虽这么说,这里是您可以使用 neo4j 做什么的示例,以获得您想要的东西。

  1. 为特殊节点标签创建唯一性约束,:Uid

    CREATE CONSTRAINT ON (uid:Uid)
    ASSERT uid.id IS UNIQUE;
    
  2. 对于每个需要标识符的节点,创建与其每个唯一 ID 的关系。

    CREATE
      (n)-[:HAS_ID]->(:Uid {id: 123}),
      (n)-[:HAS_ID]->(:Uid {id: 234})
      ...
    
  3. 当您需要通过其任何 Uid 查找节点时:

    MATCH (uid:Uid {id: 123})<-[:HAS_ID]-(n)
    RETURN n;