如何在Neo4j 2.0中创建唯一关系

4
我希望能在neo4j中创建一些独特的实体关系。目前我有作者和文章,它们之间有一个“Authored”关系。我想在这些实体之间创建一个“CoAuthored”关系。
如下所示:
match (a)-[r]->(b)<-[r2]-(c)
create (a)-[new:CoAuthor]->(c)

然而,我想创建一个独特的共同作者关系,并在关系已经存在时更新权重。我看到了这篇帖子,但该语法已不被支持:在Cypher中,如何创建一个不存在的关系;如果关系存在则更新属性

SyntaxException: This syntax is no longer supported (missing properties are now returned as null). Please use (not(has(<ident>.weight)) OR <ident>.weight=<value>) if you really need the old behavior.

我不太理解我需要替换的是什么。我查看了合并命令,但无法完全使其工作。

1个回答

3
在这种特定情况下,您应该能够将create替换为merge
match (a)-[r]->(b)<-[r2]-(c)
merge (a)-[new:CoAuthor]->(c)
on create set new.weight=1
on match set new.weight=new.weight+1

1
合并似乎不能保证唯一性。我快速运行了很多这样的查询,但仍然创建了重复的关系。我是否错过了一些微不足道的东西? - yuklai

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接