我有两个节点,其间具有相同属性的相同边缘一遍又一遍地创建。我怎样才能避免这种情况?如果边缘具有不同的属性,那么它的OK和它需要保留,但是如果属性相同,则只应该有一条边。具有相同属性的重复边缘neo4j
编辑:我正在使用rails,我想通过应用程序来执行此操作,而不是使用Cypher查询。
编辑:为关联共享一些代码:
dis = Disease.where(disease: params[:disease]).first
fac = Factor.where(factor: params[:factor])
dis.factors.create(fac, prop: "p1")
所以,我要的是,如果我输入相同的疾病和因素,它不能复制的边缘(它目前正在做)为被设定属性也一样。但是,如果将来这个p1
更改为p2
,那么应该添加边缘。
请参阅后Neo4j inconsistent behaviour of model classes模型类(疾病和因素)。
但是在这种情况下,对于不同的属性,我也无法制作多个边,对吧? – vish4071
或者它似乎'独特:所有'就是我想要的?! – vish4071
如果您使用'unique:true' /'unique :::none'(两者相同),则只会创建该关系类型的一个关系。如果指定'unique::all',它将始终创建一个新的关系,除非所有的属性都相同。 ':on'选项可以让你更具体地指定属性 –