问题描述
我有一个关于 Cypther 查询的问题。我想将某些值作为属性附加到具有特定 id 的节点,这也是一个属性。
因此,出于可重现的小示例的目的,假设我们有 3 个 nodes
,称为 car
。这些节点中的每一个都具有属性 id
。现在对于两个 nodes
,我有值 max_speed
,我想通过 id
识别这些节点并附加 max_speed
。因此我有两个列表 id = [1,2]
和 max_speed = [180,200]
。有了这个列表,我想更新三个 car
节点中的两个。所以带有 id = 1
的节点应该得到 max_speed = 180
等
我想我的 Cypher 应该看起来像这样,但不幸的是我不知道如何编写 SET
语句,非常感谢您的帮助。
MATCH (c:car)
WHERE ANY (id IN c.id WHERE id IN [1,2])
SET ...
RETURN c
非常感谢您,祝您周末愉快。
M.
解决方法
UNWIND 是一种方法。 我用浏览器参数向你演示了这个概念:
:param carspeeds => ({cars:[{ id:1,speed:10},{ id:2,speed:20}]})
UNWIND $carspeeds.cars AS carspeed
MATCH (c:Car {id:carspeed.id})
SET c.maxSpeed=carspeed.speed