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

MongoDB聚合中对$filter结果实现去重计数的方法咨询

直接对$filter结果去重计数的实现方案

完全不用重构现有查询,直接在原有的$project阶段里嵌套MongoDB数组操作符就能实现去重计数。核心逻辑分四步:

  1. 保留你原有的$filter逻辑得到目标数组;
  2. 提取数组中用来判定重复的标识(可以是单个字段,也可以是整个对象);
  3. 用$setUnion对提取出的内容去重;
  4. 最后用$size获取去重后的元素数量。

具体代码示例

把你原有的totalCount字段替换成下面的结构即可:

"uniqueCount": {
  "$size": {
    "$setUnion": [
      {
        "$map": {
          "input": {
            "$filter": { ... } // 这里保留你原来的filter条件
          },
          "as": "item",
          "in": "$$item.itemId" // 替换成你实际用来去重的字段,要对整个对象去重就写"$$item"
        }
      }
    ]
  }
}

补充说明

  • 若要对整个Item对象去重,直接将$map的in值改为$$item,$setUnion会自动对比对象完整内容实现去重;
  • 若要基于单个字段去重,就像示例中那样提取对应字段值,$setUnion会对该字段的取值做去重处理;
  • 整个逻辑完全嵌套在$project阶段内,不需要改动$facet的整体结构,也无需新增$unwind或$group步骤。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 08:05:33