Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neo4j/Cypher FOREACH方括号和使用;然后[1]”;_Neo4j_Cypher_Graph Databases_Cypher 3.1 - Fatal编程技术网

Neo4j/Cypher FOREACH方括号和使用;然后[1]”;

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

我见过多个引用方括号中数字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对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库,请提供更多信息,以及(可以说)不太可读的替代方案。

谢谢!这就是我要找的。是的,有点粗糙,但适合我的需要。