You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MongoDB聚合:如何提取嵌套对象数组中指定州的人口数据

解决方法与学习资源推荐

一、提取DEF州人口数据的聚合查询方案

你的数据存在字段名不一致问题(第一个文档人口字段为populated,第二个为population),用MongoDB聚合管道可以实现需求,具体命令如下:

db.collection.aggregate([
  // 展开states数组,将每个州转为独立文档
  { $unwind: "$country_info.states" },
  // 筛选出state_name为DEF的记录
  { $match: { "country_info.states.state_name": "DEF" } },
  // 提取所需字段,统一人口字段名为population
  {
    $project: {
      _id: 0,
      name: 1,
      population: {
        $ifNull: ["$country_info.states.population", "$country_info.states.populated"]
      }
    }
  }
])

执行后会得到期望结果:

{ "name" : "NZ", "population" : 22 }
{ "name" : "Oz", "population" : 5 }

步骤说明:

  • $unwind:拆分嵌套的states数组,让每个州成为独立文档,方便后续筛选处理
  • $match:精准过滤出州名为DEF的记录
  • $project:剔除不需要的_id字段,提取国家名称,用$ifNull兼容字段名差异,优先取population,不存在则用populated

二、嵌套数组/对象操作的学习视频推荐

  • MongoDB官方中文教程系列:涵盖聚合管道、嵌套数据处理等核心内容,讲解权威准确
  • B站尚硅谷MongoDB教程:从基础到进阶,包含大量嵌套数据操作的实战案例,适合巩固基础
  • MongoDB中文社区聚合专题视频:专门针对聚合管道的复杂场景拆解,解决嵌套数据处理的常见痛点

内容的提问来源于stack exchange,提问作者Matt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 00:01:06