Arrays 如何将单个(可选)参数推入数组
我正在尝试使用第一行Arrays 如何将单个(可选)参数推入数组,arrays,neo4j,cypher,Arrays,Neo4j,Cypher,我正在尝试使用第一行中提供的属性填充数组(fruit.Price),其中包含以下密码的行: WITH [{Price_1:15,Price_2:20,Price_3:17,strFruit:"apples"},{Price_1:2,Price_2:1,Price_3:1.5,Price_4:3,strFruit:"pears"}] AS props UNWIND props as p MATCH (fruit:Fruit) WHERE fruit.strFruit=p.strFruit FORE
中提供的属性填充数组(fruit.Price
),其中包含以下密码的行:
WITH [{Price_1:15,Price_2:20,Price_3:17,strFruit:"apples"},{Price_1:2,Price_2:1,Price_3:1.5,Price_4:3,strFruit:"pears"}] AS props
UNWIND props as p
MATCH (fruit:Fruit) WHERE fruit.strFruit=p.strFruit
FOREACH (price in [p.Price_1,p.Price_2,p.Price_3,p.Price_4] |SET fruit.Price = fruit.Price + price)
RETURN fruit
其中,p.Price_u
n的最大数量为4,但并非全部都必须提供(如上所述,其中p.Price_4在第一行中缺失)。这些物业将始终连续供应,即如果没有价格3,价格4也不会供应
如何以这种方式用可变数量的元素填充数组?为了它的价值;我实际上使用的是HTTP Rest API,WITH行实际上是一个参数:
命令
谢谢我会使用coalesce()
,不存在的默认值为0。此外,执行reduce()
可能比执行foreach()
更容易。(更新为用例/而不是合并时。)
更简单的方法是传递一个可变长度的数组{prices:[15,20,17],strFruit:“apples”}
。。。或者只是总价(如果你能控制的话)
谢谢,韦斯,但这不是我想要的。我需要一系列的价格,而不是它们的总和。因此,对于第一行水果.Price[15,20,17]
和第二行水果.Price[2,1,1.5,3]
。我无法传入数组。
WITH [{Price_1:15,Price_2:20,Price_3:17,strFruit:"apples"},{Price_1:2,Price_2:1,Price_3:1.5,Price_4:3,strFruit:"pears"}] AS props
UNWIND props as p
MATCH (fruit:Fruit) WHERE fruit.strFruit=p.strFruit
SET fruit.Price = reduce(total = [], price in [p.Price_1,p.Price_2,p.Price_3,p.Price_4] | CASE WHEN NOT price is NULL THEN total + price ELSE total END)
RETURN fruit