MongoDB去重分组查询:提取指定条件下不重复的potential值
MongoDB查询方案:提取指定条件下不重复的potential字段值
需求说明
筛选集合中val字段为true的文档,提取其中不重复的potential字段值,并整理为{"values": [100, 200]}的格式。
方案一:使用聚合管道(直接输出目标格式)
通过聚合管道可以一步到位生成符合要求的结果:
db.人员集合.aggregate([ // 过滤出val为true的文档 { $match: { val: true } }, // 聚合并收集不重复的potential值 { $group: { _id: null, values: { $addToSet: "$potential" } } }, // 移除默认的_id字段 { $project: { _id: 0 } } ])
步骤解释
$match:精准筛选出包含val: true的文档,减少后续处理的数据量;$group:将所有符合条件的文档归为一组,利用$addToSet自动去重并收集potential值到values数组;$project:移除聚合阶段生成的_id字段,最终输出完全匹配你期望的格式。
方案二:先取去重值再格式化(适合快速验证)
如果需要分步操作,可以先用distinct方法获取去重值,再包装成目标格式:
// 获取符合条件的不重复potential值数组 const distinctPotentials = db.人员集合.distinct("potential", { val: true }); // 整理为指定格式 { values: distinctPotentials }
结果验证
针对你提供的示例数据,两种方案都会输出:
{"values" : [100, 200]}
内容的提问来源于stack exchange,提问作者pipino
相关产品推荐
相关产品推荐

