我见过多个引用方括号中的数字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 NULL为真,则它将执行
DELETE rel CREATE (newest)-[:NEXT_SUB_REPLY]->(prevNewest)否则它什么也做不了。Neo4j docs在FOREACH上使用得很少,并且在THEN子句中既不使用方括号也不使用1。
发布于 2020-10-23 00:30:24
要支持语句的条件执行,这有点小麻烦。从本质上讲,它相当于下面的伪代码:
IF (rel IS NOT NULL) THEN {
DELETE rel CREATE (newest)-[:NEXT_SUB_REPLY]->(prevNewest))
}FOREACH将遍历集合并对集合中的每个元素执行一些操作。如果集合中没有元素,该操作将不会运行。如果集合中有一个元素,它将运行一次。
至于为什么它在查询中是[1],实际上这并不重要,这基本上只是一个惯例,取决于个人喜好。它与任何单元素集合的工作方式相同-例如,[true]或[null]应该都足够了。重要的是,CASE语句的真实部分返回一个单元素数组,否则返回一个零元素数组。
如果你愿意依赖于The docs库,APOC有更多的信息,以及(可以说)更少的不可读的替代方案。
https://stackoverflow.com/questions/64485324
复制相似问题