ppa*_*eja 6 multiplicity neo4j nosql graph-databases orientdb
我想知道Neo4j和OrientDB是否提供了根据特定边缘类型的多重性定义约束的可能性?
You can set multiplicity on out/in collection per label. Example to set maximum 1 edges from Person to Company if the edge's label is "workFor":
ALTER PROPERTY Person.out_workFor NOT NULL
ALTER PROPERTY Person.out_workFor MAX 1
Run Code Online (Sandbox Code Playgroud)
You can also set the minimum with:
ALTER PROPERTY Person.out_workFor MIN 1
Run Code Online (Sandbox Code Playgroud)
In this way with min & max it's mandatory having one and only one relationship to Company.
Mic*_*ger -1
当违反约束时您想要做什么?异常和回滚或以某种方式合并?
对于 1:1 基数,存在合并
MATCH (p:Person {name:"Pablo"})
MATCH (c:Company {name:"Era7"})
MERGE (p)-[:WORKS_FOR]->(c);
Run Code Online (Sandbox Code Playgroud)
对于更高的基数约束,您可以使用支持元模型和模式的框架,例如structr.org或sylvadb。
或者,您可以设置一个小型 tx 事件处理程序来检查您的基数,并在违反约束时引发异常。
无论如何,我想写一篇关于它的博客文章,敬请期待。