MongoDB如何统计多文档中Location字段的唯一值数量?
统计MongoDB中Location字段的唯一地址数量
方法一:正确使用distinct命令
如果之前用distinct没成功,先检查调用语法是否正确。直接获取唯一Location数组后取长度即可:
db.你的集合名.distinct("Location").length
注意:如果Location字段存在多余空格、大小写不一致、隐性特殊字符(比如全角/半角空格),相同地址会被判定为不同值,导致统计不准。
方法二:用聚合框架(更可靠,支持地址清洗)
如果地址格式不统一,优先用聚合分组+统计的方式,还能先对地址做清洗处理:
db.你的集合名.aggregate([ // 第一步:清洗Location字段(可选但推荐) { $addFields: { cleanedLocation: { // 先去除前后空格,再把多个连续空格替换为单个 $replaceAll: { input: { $trim: { input: "$Location" } }, find: " ", replacement: " " } } } }, // 第二步:按清洗后的地址分组 { $group: { _id: "$cleanedLocation", // 不需要清洗的话直接用"$Location" docCount: { $sum: 1 } // 可选:统计每个地址对应的文档数 } }, // 第三步:统计唯一地址的总数量 { $count: "uniqueLocationCount" } ])
执行后会返回类似{ "uniqueLocationCount" : 50000 }的结果,就是你要的唯一地址对应的文档组数。
如果不需要统计单个地址的文档数,也可以简化聚合步骤:
db.你的集合名.aggregate([ { $group: { _id: "$Location" } }, { $count: "uniqueLocationCount" } ])
内容的提问来源于stack exchange,提问作者bruceb
相关产品推荐
相关产品推荐

