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

MongoDB如何从嵌套对象提取指定字段并调整输出结构?

解决方案

要将嵌套在obj_modalidadeoperacao中的cod_modalidadeoperacao字段提升为顶级字段,仅靠find的基础投影无法实现,需要改用聚合框架的$project阶段重新构造输出文档结构。

修改后的查询语句

db.getCollection("c_usina").aggregate([
  {
    $project: {
      _id: 0, // 可选:若不需要返回默认的_id字段则添加
      id_bdt: 1,
      nom_curto: 1,
      cod_modalidadeoperacao: "$obj_modalidadeoperacao.cod_modalidadeoperacao"
    }
  }
])

原理说明

  • 基础的find投影仅能选择或排除字段,无法改变字段的层级结构,因此嵌套字段会保留在原对象中。
  • 聚合的$project阶段支持通过字段路径($obj_modalidadeoperacao.cod_modalidadeoperacao)引用嵌套字段,并将其映射为新的顶级字段,完全匹配你期望的输出结构。

可选简化(MongoDB 4.4+)

如果你的MongoDB版本是4.4及以上,也可以在find中直接使用聚合表达式实现:

db.getCollection("c_usina").find(
  {},
  {
    _id: 0,
    id_bdt: 1,
    nom_curto: 1,
    cod_modalidadeoperacao: { $first: "$obj_modalidadeoperacao.cod_modalidadeoperacao" }
  }
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 21:50:42