2

我在我的项目中使用 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;

但是,使用合并和最后,我得到一个错误(基本上 r.positive 在创建新关系时不存在,也许我没有使用合并正确)

Don't know how to Divide(LastFunction(Product(r,positive(14),true)),Literal(2)) `2` with `null`

还有其他方法可以编写此查询吗?

谢谢

4

1 回答 1

3

合并很好,但是 when r.positiveis 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
于 2013-11-05T10:56:58.150 回答