我需要对顶点进行唯一标识,并通过一个属性的一组值中的每个值快速到达(即此属性可能对于一个顶点具有多于一个值),每个值在所有顶点上应该是唯一的(即任何vertex1.id属性值(它是一组顶点id)与任何其他vertex2.id的交集是空的,其中vertex1!= vertex2)?
这是非常强大的功能,具有深远的影响,我无法找到哪个graph-db引擎具有内置功能。
如果没有这样的内置功能,那么可能有解决这种影响的解决方法吗?
答案 0 :(得分:1)
neo4j允许您在节点标签/属性对上定义Uniqueness Constraint,满足您想要的大部分内容,除了它定义了应用于整个属性值的“唯一性”,而不是定义在其中的单个项目值。后一个要求似乎并不是一个广泛需要的功能,因为几乎所有模型最多只需要一个唯一标识符。
话虽如此,这里有一个例子,你可以用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;