当我在节点上投票时,我想登记与投票相关的积分。但是,我还想在单独的属性中跟踪负点和正点的数量。
这是我想要实现的目标的草图,尽管它不起作用:
CREATE (u:User)
-[v:VOTES_ON{ points: $points }]
->(i:Item)
CASE
WHEN $points > 0 SET i.points_up = COALESCE(i.points_up, 0) + $points
ELSE SET i.points_down = COALESCE(i.points_down, 0) + $points
SET i.points = COALESCE(i.points, 0) + $points
RETURN u, v, i
(我正在使用 Neo4j 的 JavaScript 驱动程序,这就是 的原因$points
。)
Cypher 有办法做到这一点吗?
您可以使用 APOC 过程
apoc.do.when
执行条件 if-then-else 写入。还有一个更通用的过程,apoc.do.case
用于更复杂的条件写入。例如: