因此,当我尝试设置属性名称/值对时,我不确定属性名称是什么。它将取决于元数据节点。
两个元数据节点:
{ id:1, value:'name' }
{ id:2, value:'age' }
我需要为Person节点添加一个属性,但我不想使用条件语句(并且cypher没有条件语句)。我想要这样的东西:
if (metadata.id = 1) {
set person.name = 'xx'
} else if (metadata.id = 2) {
set person.age = 'xx'
}
或:
match (m:metadata{id:1}), (p:person{id:1}) set p.'m.value' = 'xx'
我不想使用if / else
条件声明。是否存在密码条件声明,或者如何实现?
答案 0 :(得分:2)
您可以使用WHERE
过滤条件
MATCH (p:Person) WHERE p.age > 21 SET p.drunk = true
或者您可以使用CASE
表达式生成零或单元素列表,然后您可以将其用于FOREACH
MATCH (p:Person)
WITH p, (case when p.age > 21 then [1] else [] end) as drunk_filter
FOREACH (x in drunk_filter | SET p.drunk = true)
Foreach的优点是在此之后继续查询。