如何在neo4j中获取所有连接的节点
How to get all connected nodes in neo4j
我想获取从节点 0 开始的所有连接节点的列表,如图所示
根据您的评论:
I want to get a list of all the connected nodes. For example in the
above case when I search for connected nodes for 0, it should return
nodes- 1,2,3
此查询将执行您想要的操作:
MATCH ({id : 0})-[*]-(connected)
RETURN connected
上面的查询将 return 与具有 id=0
的节点相连的所有节点(我认为节点内的数字是 id 属性 的值)在任何深度,两个方向并考虑任何关系类型。查看文档的 Relationships in depth 部分。
虽然这适用于小图,但请注意这是一项非常昂贵的操作。考虑到任何关系类型,它将从起点 ({id : 0})
开始 开始 遍历整个图表。这对于生产环境来说确实不是一个好主意。
如果你想匹配与另一个节点有关系的节点,你可以使用这个:
MATCH (n) MATCH (n)-[r]-() RETURN n,r
它将return所有与另一个节点或多个节点有关系的节点,无论关系的方向如何。
如果你想添加一个约束,你可以这样做:
MATCH (n:Label {id:"id"}) MATCH (n)-[r]-() RETURN n,r
对于更大或更紧密互连的图,APOC Procedures 提供比 returns 子图中所有节点更有效的遍历方法。
正如其他人已经提到的,最好在节点上使用标签,并在标签上添加索引或唯一约束+属性 以便快速查找起始节点。
使用标签 "Label" 和参数 idParam
,使用 APOC 获取子图节点的查询为:
MATCH (n:Label {id:$idParam})
CALL apoc.path.subgraphNodes(n, {minLevel:1}) YIELD node
RETURN node
节点将是不同的,并且起始节点不会与其余节点一起返回。
编辑
目前有一个限制在 subgraphNodes()
中使用 minLevel
,您可以使用自己过滤掉起始节点,或者使用 apoc.path.expandConfig()
使用 uniqueness:'NODE_GLOBAL'
来获取同样的效果。
我想获取从节点 0 开始的所有连接节点的列表,如图所示
根据您的评论:
I want to get a list of all the connected nodes. For example in the above case when I search for connected nodes for 0, it should return nodes- 1,2,3
此查询将执行您想要的操作:
MATCH ({id : 0})-[*]-(connected)
RETURN connected
上面的查询将 return 与具有 id=0
的节点相连的所有节点(我认为节点内的数字是 id 属性 的值)在任何深度,两个方向并考虑任何关系类型。查看文档的 Relationships in depth 部分。
虽然这适用于小图,但请注意这是一项非常昂贵的操作。考虑到任何关系类型,它将从起点 ({id : 0})
开始 开始 遍历整个图表。这对于生产环境来说确实不是一个好主意。
如果你想匹配与另一个节点有关系的节点,你可以使用这个:
MATCH (n) MATCH (n)-[r]-() RETURN n,r
它将return所有与另一个节点或多个节点有关系的节点,无论关系的方向如何。
如果你想添加一个约束,你可以这样做:
MATCH (n:Label {id:"id"}) MATCH (n)-[r]-() RETURN n,r
对于更大或更紧密互连的图,APOC Procedures 提供比 returns 子图中所有节点更有效的遍历方法。
正如其他人已经提到的,最好在节点上使用标签,并在标签上添加索引或唯一约束+属性 以便快速查找起始节点。
使用标签 "Label" 和参数 idParam
,使用 APOC 获取子图节点的查询为:
MATCH (n:Label {id:$idParam})
CALL apoc.path.subgraphNodes(n, {minLevel:1}) YIELD node
RETURN node
节点将是不同的,并且起始节点不会与其余节点一起返回。
编辑
目前有一个限制在 subgraphNodes()
中使用 minLevel
,您可以使用自己过滤掉起始节点,或者使用 apoc.path.expandConfig()
使用 uniqueness:'NODE_GLOBAL'
来获取同样的效果。