首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Neo4j/Cypher FOREACH方括号和"THEN [1]“

问Neo4j/Cypher FOREACH方括号和"THEN [1]“
EN

Stack Overflow用户
提问于 2020-10-22 23:16:20
回答 1查看 87关注 0票数 0

我见过多个引用方括号中的数字1的cypher FOREACH语句的示例,但我找不到有关它的文档。这是一个工作声明:

代码语言:javascript
复制
FOREACH(i in CASE WHEN NOT rel IS NULL THEN [1] ELSE [] END |
DELETE rel CREATE (newest)-[:NEXT_SUB_REPLY]->(prevNewest))

虽然我很高兴它能正常工作,但我想更多地了解方括号的用法和数字1的用法。

代码语言:javascript
复制
CASE WHEN NOT rel IS NULL

为真,则它将执行

代码语言:javascript
复制
DELETE rel CREATE (newest)-[:NEXT_SUB_REPLY]->(prevNewest)

否则它什么也做不了。Neo4j docs在FOREACH上使用得很少,并且在THEN子句中既不使用方括号也不使用1。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-23 00:30:24

要支持语句的条件执行,这有点小麻烦。从本质上讲,它相当于下面的伪代码:

代码语言:javascript
复制
IF (rel IS NOT NULL) THEN {
   DELETE rel CREATE (newest)-[:NEXT_SUB_REPLY]->(prevNewest))
}

FOREACH将遍历集合并对集合中的每个元素执行一些操作。如果集合中没有元素,该操作将不会运行。如果集合中有一个元素,它将运行一次。

至于为什么它在查询中是[1],实际上这并不重要,这基本上只是一个惯例,取决于个人喜好。它与任何单元素集合的工作方式相同-例如,[true]或[null]应该都足够了。重要的是,CASE语句的真实部分返回一个单元素数组,否则返回一个零元素数组。

如果你愿意依赖于The docs库,APOC有更多的信息,以及(可以说)更少的不可读的替代方案。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64485324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档