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

MongoDB聚合操作后如何从数组中移除空对象?

移除MongoDB聚合结果数组中的空对象

如果你执行db.name.aggregate()后得到包含空对象{}的数组结果,想要过滤掉这些空对象,可以通过在聚合管道中添加$project配合$filter操作符实现。

实现步骤

假设你的聚合管道通过$group等阶段将结果汇总到了一个数组字段(比如items),只需在管道末尾添加以下阶段:

{
  $project: {
    items: {
      $filter: {
        input: "$items",
        cond: { $ne: ["$$this", {}] }
      }
    }
  }
}

完整聚合示例

比如你的完整聚合命令可以写成:

db.name.aggregate([
  // 这里是你的原有聚合阶段,比如$match、$project、$group等
  { $group: { _id: null, items: { $push: "$$ROOT" } } },
  // 过滤空对象的阶段
  {
    $project: {
      items: {
        $filter: {
          input: "$items",
          cond: { $ne: ["$$this", {}] }
        }
      }
    }
  }
])

原理说明

  • $filter会遍历input参数指定的数组,只保留满足cond条件的元素。
  • $ne: ["$$this", {}]表示判断当前数组元素$$this是否不等于空对象{},满足条件的元素会被保留在最终数组中。

这样处理后,聚合结果中的空对象就会被全部移除,得到你期望的输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 17:40:37