是否有可能限制Neo4j / OrientDB中的边缘多重性?

时间:2014-10-09 09:00:37

标签: neo4j orientdb graph-databases multiplicity nosql

我想知道Neo4j和OrientDB是否提供了根据特定边缘类型的多重性定义约束的可能性?

2 个答案:

答案 0 :(得分:6)

对于OrientDB

您可以为每个标签的out / in集合设置多重性。如果边的标签是“workFor”,则设置从Person到Company的最大1条边的示例:

ALTER PROPERTY Person.out_workFor NOT NULL
ALTER PROPERTY Person.out_workFor MAX 1

您还可以设置最小值:

ALTER PROPERTY Person.out_workFor MIN 1

以这种方式与min&最大强制要求与公司只有一个且只有一个关系。

答案 1 :(得分:-1)

对于Neo4j

违反约束时你想做什么?例外&回滚还是以某种方式合并?

对于1:1基数,有合并

MATCH (p:Person {name:"Pablo"})
MATCH (c:Company {name:"Era7"})
MERGE (p)-[:WORKS_FOR]->(c);

对于更高的基数约束,您可以使用支持元模型和structr.orgsylvadb等架构的框架。

或者您可以设置一个小的tx事件处理程序来检查您的基数,并在违反约束时引发异常。

我想写一篇关于它的博客文章,敬请期待。