顶点属性(ID),它是一组唯一值

时间:2015-09-28 15:47:19

标签: neo4j graph-databases

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

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

如果没有这样的内置功能,那么可能有解决这种影响的解决方法吗?

1 个答案:

答案 0 :(得分:1)

neo4j允许您在节点标签/属性对上定义Uniqueness Constraint,满足您想要的大部分内容,除了它定义了应用于整个属性值的“唯一性”,而不是定义在其中的单个项目值。后一个要求似乎并不是一个广泛需要的功能,因为几乎所有模型最多只需要一个唯一标识符。

话虽如此,这里有一个例子,你可以用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;