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 做什么的示例,以获得您想要的东西。
为特殊节点标签创建唯一性约束,:Uid
。
CREATE CONSTRAINT ON (uid:Uid)
ASSERT uid.id IS UNIQUE;
对于每个需要标识符的节点,创建与其每个唯一 ID 的关系。
CREATE
(n)-[:HAS_ID]->(:Uid {id: 123}),
(n)-[:HAS_ID]->(:Uid {id: 234})
...
当您需要通过其任何 Uid 查找节点时:
MATCH (uid:Uid {id: 123})<-[:HAS_ID]-(n)
RETURN n;
我需要通过一组值 属性 中的每个值来唯一标识并快速到达顶点(即这个 属性 可能有一个顶点的多个值),每个值在所有顶点上都应该是唯一的(即任何 vertex1.id 属性 值(这是一组顶点 ID)与任何其他 vertex2.id 的交集为空,其中 vertex1 != vertex2) ?
这是一个非常强大的功能,具有深远的影响,我找不到哪个 graph-db 引擎具有提供此功能的内置功能。
如果没有这样的内置功能,那么可能有解决方法来实现这种效果?
neo4j 允许您在节点 label/property 上定义一个 Uniqueness Constraint 满足大部分您想要的,除了它定义 "uniqueness" 以应用于整个 [=35] =] 值,而不是该值内的个别项目。后一种要求似乎并不是一个广泛需要的功能,因为几乎所有模型最多只需要一个唯一标识符。
话虽这么说,这里是您可以使用 neo4j 做什么的示例,以获得您想要的东西。
为特殊节点标签创建唯一性约束,
:Uid
。CREATE CONSTRAINT ON (uid:Uid) ASSERT uid.id IS UNIQUE;
对于每个需要标识符的节点,创建与其每个唯一 ID 的关系。
CREATE (n)-[:HAS_ID]->(:Uid {id: 123}), (n)-[:HAS_ID]->(:Uid {id: 234}) ...
当您需要通过其任何 Uid 查找节点时:
MATCH (uid:Uid {id: 123})<-[:HAS_ID]-(n) RETURN n;