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

MongoDB聚合查询实现公共字段投影与数值求和返回嵌套结果

MongoDB 自定义字段聚合查询实现

实现思路

  • 管道首阶段固定使用$match完成文档过滤,过滤条件支持自定义配置
  • 通过$facet拆分两个并行子管道,分别处理公共字段投影、数值字段求和两类逻辑,仅需一次集合扫描即可完成计算
  • 最后调整输出结构,匹配要求的嵌套返回格式

可直接运行的聚合代码

db.你的业务集合名.aggregate([
  // 管道第一阶段:$match 文档匹配过滤,可自定义查询条件
  {
    $match: {
      // 示例过滤规则,可根据业务需求替换,比如按时间范围、运营线路、机构id筛选
      bus: "EXAMP",
      city: "Kanpur"
    }
  },
  // 拆分两路并行计算两类结果
  {
    $facet: {
      // 第一路:处理result数组,投影返回指定公共字段
      result: [
        {
          $project: {
            _id: 0, // 不需要返回_id字段可保留该行,需要则删除
            bus: 1,
            city: 1,
            AccountName: 1,
            agencyName: 1,
            depotName: 1
          }
        },
        // 匹配范围内公共字段值一致,仅取1条即可,返回长度为1的符合要求的数组
        { $limit: 1 }
      ],
      // 第二路:处理aggregates对象,对指定数值字段做sum求和
      aggregates: [
        {
          $group: {
            _id: null,
            CashCollection: { $sum: "$CashCollection" },
            Collection: { $sum: "$Collection" },
            IssueTicket: { $sum: "$IssueTicket" },
            PassengerCount: { $sum: "$PassengerCount" },
            TicketCount: { $sum: "$TicketCount" }
          }
        },
        { $project: { _id: 0 } }
      ]
    }
  },
  // 调整最终输出结构,把aggregates从数组转为顶层键值对对象
  {
    $project: {
      _id: 0,
      result: 1,
      aggregates: { $first: "$aggregates" }
    }
  }
])

自定义配置方法

  • 过滤规则调整:直接修改第一阶段$match内的查询条件,语法和普通MongoDB查询完全一致
  • 公共字段调整:修改result子管道$project阶段的字段配置,需要返回的字段设置值为1即可
  • 求和字段调整:修改aggregates子管道$group阶段的配置,新增/删除求和字段时,遵循字段名: { $sum: "$字段名" }格式即可

返回结果示例

{
  "result": [
    {
      "bus": "EXAMP",
      "city": "Kanpur",
      "AccountName": "Examp Transport Service",
      "agencyName": "BBS",
      "depotName": "RAYAPUR HUBLI"
    }
  ],
  "aggregates": {
    "CashCollection": 18,
    "Collection": 50,
    "IssueTicket": 12,
    "PassengerCount": 9,
    "TicketCount": 8
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 14:27:18