neo4j更新数组属性(如果存在)

时间:2013-11-05 06:46:07

标签: neo4j cypher

我正在为我的项目使用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`

还有另一种方法来编写此查询吗?

由于

1 个答案:

答案 0 :(得分:3)

合并很好,但当r.positivenull时,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