Graph Neo4J-根据属性值从两个匹配查询之一获取结果

Graph Neo4J-根据属性值从两个匹配查询之一获取结果,graph,neo4j,properties,match,Graph,Neo4j,Properties,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 更

我希望能够基于传入的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

不幸的是,我只能使用一个查询,因此不能有两个
RETURN
语句。ok。因此,当另一个查询不匹配时,您不能在实例中处理NULL?如果两个语句都不匹配节点,那么我在其他地方处理它,但是当我注释掉第一个
可选匹配
并运行查询时,我希望从第二个语句中返回的结果实际上是返回的。当两条语句都留在查询中时,它必须使用第一条语句NULL result,并忽略第二条语句,因此不会从数据库返回结果。如果整个查询不返回节点,这很好,但我知道第二个
可选匹配
语句在自己的情况下会返回节点,但在包含第一个语句时不会返回节点。您在两个可选匹配中使用相同的标识符
n
,因此只有一个可以获胜。我提供了另一种可能性,现在我想我更了解了。这里的假设是id将只匹配一个或另一个,而不是两者都匹配。您更新的解决方案有效。现在我意识到这似乎很简单,但有时候就是这样。非常感谢。