如何在MongoDB中找到特定类别的最常见值?
我在MongoDB中有一个数据集,如下所示:如何在MongoDB中找到特定类别的最常见值?,mongodb,mongodb-query,aggregation-framework,Mongodb,Mongodb Query,Aggregation Framework,我在MongoDB中有一个数据集,如下所示: { "name": "Tom's", "category": "coffee shop" }, { "name": "Red Lobster", "category": "restaurant" }, { "name": "Tom's", "category": "coffee shop" }, { "name": "Starbucks", "category": "coffee shop" }, { "name": "Central Park",
{ "name": "Tom's", "category": "coffee shop" },
{ "name": "Red Lobster", "category": "restaurant" },
{ "name": "Tom's", "category": "coffee shop" },
{ "name": "Starbucks", "category": "coffee shop" },
{ "name": "Central Park", "category": "park" },
{ "name": "Office", "category": "office" },
{ "name": "Red Lobster", "category": "restaurant" },
{ "name": "Home", "category": "home" },
{ ... } // and so on
我如何才能找到特定类别的最常见值?例如,咖啡店
和餐厅
最常见的出现值应该分别是Tom's和Red Lobster
我当前的$aggregate
查询似乎只列出了所有数据集中最常见的值:
db.collection.aggregate(
{ "$group": { "_id": { "name": "$name" }, "count": { "$sum":1 } }},
{ "$group": { "_id": "$_id.name", "count": { "$sum": "$count" } }},
{ "$sort": { "count":-1 }}
)
您可以尝试下面的查询
$group
关于类别和名称,以获取每个类别和名称组合的计数
$sort
按类别和计数说明对输入文档进行排序
使用$first
选择类别上的$group
,以选择出现次数最多的文档
db.collection_name.aggregate([
{
"$group": {
"_id": {
"category": "$category",
"name": "$name"
},
"count": {
"$sum": 1
}
}
},
{
"$sort": {
"_id.category": 1,
"count": -1
}
},
{
"$group": {
"_id": {
"category": "$_id.category"
},
"name": {
"$first": "$_id.name"
},
"count": {
"$first": "$count"
}
}
}
])
谢谢,这和我想要的很接近。我要玩玩它。