如何解决Neo4j / Cypher FOREACH方括号和“ THEN [1]”的使用
我已经看到了多个在方括号中引用数字1的密码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。
解决方法
支持有条件地执行语句有点麻烦。从本质上讲,它等效于以下伪代码:
IF (rel IS NOT NULL) THEN {
DELETE rel CREATE (newest)-[:NEXT_SUB_REPLY]->(prevNewest))
}
FOREACH
将遍历一个集合,并对集合的每个元素执行一些操作。如果集合中没有元素,则该操作将不会运行。如果集合中只有一个元素,它将运行一次。
关于在查询中为何使用[1]
的问题,实际上并不重要,基本上只是约定俗成,并取决于个人喜好。任何单一元素集合都将以相同的方式工作-例如[true]
或[null]
都应足够。重要的是,CASE
语句的真实部分返回一个单元素数组,否则返回一个零元素数组。
The docs提供了更多的信息,并且,如果您愿意依赖APOC库,那么(可以说)不那么难以理解的替代方案。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。