如何在Neo4j中按子组分组并输出数组的数组格式结果
Neo4j实现分组得到数组的数组输出
情况1:基于层级关系分组(父-子-孙节点结构)
假设你的节点标签为Node,节点有属性code,父节点与子节点间存在PARENT_OF关系,根节点的code格式为ST00X(如ST001、ST002),可使用以下Cypher查询:
MATCH path = (root:Node)-[:PARENT_OF*0..2]->(child:Node) WHERE root.code =~ 'ST00\\d' WITH root, collect(child.code) AS group RETURN collect(group) AS result
*0..2表示匹配根节点自身及往下两层的子节点,若层级数不同可调整这个范围root.code =~ 'ST00\\d'用于筛选目标根节点,可根据实际code规则修改正则
情况2:基于code前缀分组
如果无需依赖层级关系,仅按code的前缀(如前5位)分组,可使用:
MATCH (n:Node) WHERE n.code =~ 'ST00\\d.*' WITH left(n.code, 5) AS prefix, collect(n.code) AS group RETURN collect(group) AS result
left(n.code,5)取code的前5位作为分组标识,若前缀长度不同可修改数字- 正则
ST00\\d.*确保只匹配以ST00开头的节点
注意事项
- 请根据实际场景调整节点标签、属性名、关系类型和正则规则
- 执行查询后,
result字段就是你需要的嵌套数组格式
内容的提问来源于stack exchange,提问作者svk003
相关产品推荐
相关产品推荐

