关于 neo4j:如何在密码查询中使用两个匹配语句

how to use two match statements in a cypher query

我想将两个请求合并到一个查询中,但我不确定在单个密码查询中使用 2 个匹配语句时会发生什么。

假设我有一个朋友列表,我希望看到我的朋友列表,他们的每个叔叔和兄弟姐妹都列在一个集合中。我可以有两个匹配语句来完成这项工作吗?例如

1
2
3
match friends-[:childOf]->parents-[:brother]->uncles
    , friends-[:childOf]->parents<-[:childOf]-siblings
return friends, collect(siblings), collect(uncles)

但是,如果我进行这样的查询,它总是不会返回任何结果。


因为你已经在你的第一堂比赛中选择了父母,你可以这样做 -

1
2
3
4
match friends-[:childOf]->parents-[:brother]->uncles
with friends, parents, uncles
match parents<-[:childOf]-siblings
return friends, collect(siblings), collect(uncles)

您可能希望将其中一些关系设为可选。例如,如果您找到兄弟姐妹但没有找到任何叔叔,则此查询将返回 null,因为它不满足两个匹配子句。如果您将结束关系设为可选,那么您不必完全满足这两个子句即可返回数据。所以:

1
2
3
match friends-[:childOf]->parents-[?:brother]->uncles
    , friends-[:childOf]->parents<-[?:childOf]-siblings
return friends, collect(siblings), collect(uncles)