Neo4J - 根据属性值从两个 MATCH 查询之一中获取结果



我希望能够根据传入的ID的结果执行特定的MATCH语句,并忽略其他MATCH语句。

假设传递的 ID 是2。我假设因为它已经运行了第一个查询并且没有匹配任何内容,所以它将 n2 作为 NULL 返回,而不是转到第二个 MATCH 语句。我可能错了。如何解决我的问题?任何帮助都会很棒。

MATCH (n: nodeA)
OPTIONAL MATCH (n {id = 1})-[r]-(n2)
OPTIONAL MATCH (n {id = 2})--(n2)
WITH n2
RETURN n2

更新了答案...

OPTIONAL MATCH (n0:nodeA {id: 1})-[r]-(n2)
WITH collect(n2) AS first_match
OPTIONAL MATCH (n1:nodeA {id: 2})--(n2)
RETURN first_match + collect(n2) AS matches

您可以只执行两个可选匹配项并返回两个结果集的并集。

OPTIONAL MATCH (n:nodeA {id: 1})-[r]-(n2)
RETURN n2
UNION
OPTIONAL MATCH (n:nodeA {id: 2})--(n2)
RETURN n2

最新更新