我正在尝试根据现有属性设置新属性。现有节点具有以下属性:
minTempC
,maxTempC
如果满足以下条件,则应设置新属性:
minTempC < 0
设置属性frosstag = true
maxTempC < 0
设置属性eistag = true
maxTempC >= 30
设置属性heissertag = true
现有节点可以满足一个,多个或没有条件。
我现在的密码是:
//Eistag
MATCH (d:Data)
WHERE d.maxtempC < 0
SET d += {eistag:true}
//Frosttag
MATCH (d:Data)
WHERE d.mintempC < 0
SET d += {frosttag:true}
//Heisser Tag
MATCH (d:Data)
WHERE d.maxtempC >= 30
SET d += {heisserTag:true}
有没有办法将这三者结合起来?我还有其他一些必须设置的属性,一遍又一遍地写这些SET
条款似乎有点单调乏味。我想过使用CASE
表达式,但我是neo4j的新手并且必须承认我不知道如何构建这样的表达式。
提前感谢您的提示。
答案 0 :(得分:2)
您可以在表达式中使用CASE WHEN
,因此以下内容应该有所帮助:
MATCH (d:Data)
SET
d.eistag = CASE WHEN d.minTempC < 0 THEN true END,
d.frosttag = CASE WHEN d.maxTempC < 0 THEN true END,
d.heisserTag = CASE WHEN d.maxTempC >= 0 THEN true END
请注意,如果条件为false,则从null
返回CASE WHEN
。将属性设置为null
值会导致不设置此属性。