在 MongoDB 里统计某个字段在所有文档中出现过哪些不同的取值,本质就是 distinct(去重取值集合)。
distinct(最直接)db.collection.distinct("fieldName")
db.collection.distinct("fieldName", { status: "ACTIVE" })
假设集合 users 里有字段 city:
db.users.distinct("city")
返回类似:
["Shanghai", "Beijing", "Shenzhen"]
适合:你只关心“有哪些值”,不关心每个值出现多少次。
group(还能顺便统计每个值的数量)db.collection.aggregate([
{ $group: { _id: "$fieldName" } }
])
db.collection.aggregate([
{ $group: { _id: "$fieldName", count: { $sum: 1 } } },
{ $sort: { count: -1 } }
])
统计 users.city 的不同取值以及出现次数: