neo4j:根据现有属性设置不同的属性

时间:2015-12-04 11:01:35

标签: neo4j cypher

我正在尝试根据现有属性设置新属性。现有节点具有以下属性:

minTempCmaxTempC

如果满足以下条件,则应设置新属性:

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的新手并且必须承认我不知道如何构建这样的表达式。

提前感谢您的提示。

1 个答案:

答案 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值会导致不设置此属性。