我正在为我的项目使用neo4j 2.0。我想使用Cypher添加关系,如果它不存在,则更新数组属性。
MATCH (a:Term), (b:Term)
WHERE a.Name = 'abc' AND b.Name = 'xyz'
CREATE UNIQUE a-[r:gives]->b
SET r.positive = coalesce(r.positive + (last(r.positive)/2),[0.125])
RETURN r;
然而,使用coalesce和last,我得到一个错误(基本上r.positive在创建新关系时不存在,也许我没有使用合并权)
Don't know how to Divide(LastFunction(Product(r,positive(14),true)),Literal(2)) `2` with `null`
还有另一种方法来编写此查询吗?
由于
答案 0 :(得分:3)
合并很好,但当r.positive
为null
时,last(r.positive)
也为空,您无法将null
分成两半。
这是否符合您的期望?
MATCH (a:Term),(b:Term)
WHERE a.name = 'abc' AND b.name = 'xyz'
CREATE UNIQUE (a)-[r:gives]->(b)
SET r.positive =
CASE WHEN NOT (HAS (r.positive))
THEN [0.125]
ELSE r.positive + LAST(r.positive)/2 END
RETURN r