在Cypher支架在Neo4j的,给定两个节点,如果有没有关系,我想创建(Foo类型的)一个的权重性质的关系。如果这种关系已经存在,我想增加它的重量属性。在Cypher中,如果不存在,我如何创建关系;更新财产,如果它确实
是否有一个单一的Cypher查询做到这一点的好办法?谢谢!
编辑:一些额外的细节: 节点已创建的,独特的,在索引。
在Cypher支架在Neo4j的,给定两个节点,如果有没有关系,我想创建(Foo类型的)一个的权重性质的关系。如果这种关系已经存在,我想增加它的重量属性。在Cypher中,如果不存在,我如何创建关系;更新财产,如果它确实
是否有一个单一的Cypher查询做到这一点的好办法?谢谢!
编辑:一些额外的细节: 节点已创建的,独特的,在索引。
这就是为什么我们在1.8中加入CREATE UNIQUE
。
START a=node(...), b=node(...)
CREATE UNIQUE a-[r:CONNECTED_TO]-b
SET r.weight = coalesce(r.weight?, 0) + 1
为了完成安德烈的回答,问号在财产到底是现在的Neo4j 2.错误 因此请求将是:
MATCH a, b
WHERE a(...) AND b(...)
CREATE UNIQUE a-[r:CONNECTED_TO]->b
SET r.weight = coalesce(r.weight, 0) + 1
你没事吧用的Neo4j的快照版本?在neo4j 1.8中,您可以使用Cypher更新图形,但不能使用其他版本。 – Nicholas 2012-07-06 00:35:57
是的,我正在使用SNAPSHOT。 – Newtang 2012-07-06 00:36:36
所以基本上你正在寻找扫描所有节点,如果已连接,增量,如果没有,创建关系? – Nicholas 2012-07-06 02:48:55