Neo4J:如何在 Cypher 查询中正确匹配键值对

问题描述

我有一个关于 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