Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.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 检查可选匹配中的空值_Neo4j_Cypher - Fatal编程技术网

Neo4j 检查可选匹配中的空值

Neo4j 检查可选匹配中的空值,neo4j,cypher,Neo4j,Cypher,我有这样一个密码查询: MATCH (start:StartLabel) OPTIONAL MATCH (start)-[:A]->(end1:EndLabel) OPTIONAL MATCH (start)-[:B|C]->(middle:MiddleLabel)-[:D]->(end2:EndLabel) WHERE NOT(end1 IS NULL AND end2 IS NULL) RETURN * 在这个图模型中,有多种有效的方法可以从(start)到达(end),

我有这样一个密码查询:

MATCH (start:StartLabel)
OPTIONAL MATCH (start)-[:A]->(end1:EndLabel)
OPTIONAL MATCH (start)-[:B|C]->(middle:MiddleLabel)-[:D]->(end2:EndLabel)
WHERE NOT(end1 IS NULL AND end2 IS NULL)
RETURN *

在这个图模型中,有多种有效的方法可以从
(start)
到达
(end)
,但我想确保结果至少匹配一个可能的
可选匹配路径。出于某种原因,我继续得到
end1
end2
都是
NULL
的结果。我是否遗漏了Cypher如何处理
可选匹配
何处
的一些信息?

我被告知
何处
始终适用于最前面的
(可选)匹配
,所以这可能会起作用

MATCH (start:StartLabel)
OPTIONAL MATCH
  (start)-[:A]->(end1:EndLabel),
  (start)-[:B|C]->(middle:MiddleLabel)-[:D]->(end2:EndLabel)
WHERE NOT(end1 IS NULL AND end2 IS NULL)
RETURN *

除此之外,我觉得
end1不为空或end2不为空
对我来说读起来更好

以下是另一种获得结果的方法:

MATCH (start:StartLabel)-[:A]->(end:EndLabel)
RETURN start, NULL as middle, end
UNION
MATCH (start:StartLabel)-[:B|C]->(middle:MiddleLabel)-[:D]->(end:EndLabel)
RETURN start, middle, end

有趣。我设置了一些单元测试,似乎
WHERE
实际上只适用于第一个
可选匹配
子句。我无法将它与任何组合的
可选匹配
子句或具有多个模式的单个
可选匹配
子句一起使用。