Neo4j/Cypher FOREACH方括号和使用;然后[1]”;
我见过多个引用方括号中数字1的cypher FOREACH语句示例,但我找不到相关文档。这是一份工作说明:Neo4j/Cypher FOREACH方括号和使用;然后[1]”;,neo4j,cypher,graph-databases,cypher-3.1,Neo4j,Cypher,Graph Databases,Cypher 3.1,我见过多个引用方括号中数字1的cypher FOREACH语句示例,但我找不到相关文档。这是一份工作说明: FOREACH(i in CASE WHEN NOT rel IS NULL THEN [1] ELSE [] END | DELETE rel CREATE (newest)-[:NEXT_SUB_REPLY]->(prevNewest)) 虽然我很高兴它能起作用,但我想更多地了解方括号和数字1的用法。从上下文中,我了解到它在何时循环通过 CASE WHEN NOT rel IS
FOREACH(i in CASE WHEN NOT rel IS NULL THEN [1] ELSE [] END |
DELETE rel CREATE (newest)-[:NEXT_SUB_REPLY]->(prevNewest))
虽然我很高兴它能起作用,但我想更多地了解方括号和数字1的用法。从上下文中,我了解到它在何时循环通过
CASE WHEN NOT rel IS NULL
如果是真的,它就会执行
DELETE rel CREATE (newest)-[:NEXT_SUB_REPLY]->(prevNewest)
否则它什么也不做。Neo4j对FOREACH非常轻巧,既不使用方括号,也不在THEN子句中使用1。支持语句的条件执行有点麻烦。本质上,它相当于以下伪代码:
IF (rel IS NOT NULL) THEN {
DELETE rel CREATE (newest)-[:NEXT_SUB_REPLY]->(prevNewest))
}
FOREACH
将迭代一个集合,并对集合的每个元素执行一些操作。如果集合中没有元素,则操作将不会运行。如果集合中有一个元素,它将运行一次
至于为什么它在查询中是[1]
,其实这并不重要,基本上只是惯例和个人品味。对于任何一个元素集合,它的工作方式都是相同的,例如[true]
或[null]
都应该足够了。重要的是CASE
语句的truthy leg返回一个单元素数组,否则返回一个零元素数组
如果您愿意依赖APOC库,请提供更多信息,以及(可以说)不太可读的替代方案。谢谢!这就是我要找的。是的,有点粗糙,但适合我的需要。