我正在尝试根据现有属性设置新属性。现有节点具有以下属性:
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 的新手,必须承认我不知道如何构建这样的表达式。
提前感谢您的提示。
最佳答案
您可以在表达式中使用 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
请注意,如果条件为假,CASE WHEN
将返回一个null
。将属性设置为 null
值会导致不设置此属性。
关于neo4j:根据现有属性设置不同的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34086834/