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

标签 neo4j cypher

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

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/

相关文章:

Neo4j (3.5.14) 互连节点的 BFS/DFS 故障

java - Neo4J Java API - 特定节点标签或排除特定关系的最短路径

ubuntu - 如何访问新的 neo4j ubuntu/ec2 安装?

java - 将大量节点插入 Neo4J

python - py2neo 是否通过 REST API 访问 Neo4j 中的所有数据类型字符串?

dynamic - Neo4j 查询标签集中的节点集并对每种类型的节点动态应用 where 子句...

Neo4j Cypher 查询和复合对象

Neo4j:如何删除与密码的特定关系?

neo4j - 在不同的属性上使用 neo4j DISTINCT 和 ORDER BY

neo4j - 如何避免路径中的循环或循环 Neo4j Cypher