Neo4j:首先检索所有第一级节点,然后检索第二级节点

Neo4j:首先检索所有第一级节点,然后检索第二级节点,neo4j,cypher,Neo4j,Cypher,有一个neo4j图形具有多个级别。我想首先检索一个节点及其第一级节点,在检索所有第一级节点之后,我想检索第二级节点 我编写了以下查询 match(node{name:'some name'})-[r1]-(a) optional match(a)-[r2]-(b) return node,a,b 但是上面的查询将首先匹配第一级节点,如果给定节点与第二级节点连接,那么它将检索所有第二级连接的节点,然后再次到第一级节点并继续该过程。(深度优先方法) 我需要它像广度优先的方法一样进行操作。您的语

有一个neo4j图形具有多个级别。我想首先检索一个节点及其第一级节点,在检索所有第一级节点之后,我想检索第二级节点

我编写了以下查询

match(node{name:'some name'})-[r1]-(a)

optional match(a)-[r2]-(b)

return node,a,b
但是上面的查询将首先匹配第一级节点,如果给定节点与第二级节点连接,那么它将检索所有第二级连接的节点,然后再次到第一级节点并继续该过程。(深度优先方法)


我需要它像广度优先的方法一样进行操作。

您的语言暗示您对我有某种层次结构,您可能希望为查询添加方向。您要做的另一件事是使用
with
语句从第一个查询中获取结果,并将其用作第二个查询的起点。在第二个查询中使用方向是导入的,因为如果没有它,您首先匹配的
a
节点将仅与原始开始节点匹配。
coalesce
函数只处理没有子级的实例

match (start {name : 'some name'})-->(a)
with a
optional match a-->b
return a, coalesce(null, 'no child')

您的意思是要运行两个查询?