MongoDB最大组内结果
我根据MongoDB最大组内结果,mongodb,max,aggregation-framework,Mongodb,Max,Aggregation Framework,我根据mvid和每组中的计数次数对结果进行分组 db.some_details.aggregate([ {$group: {_id: "$mvid", count: {$sum: 1}}} ]) 现在,我想选择具有最大计数的组。以下是我天真的猜测: db.some_details.aggregate([ {$group: {_id: "$mvid", count: {$sum: 1}}}, {$max: "count"} ]) 显然,它会产生一个错误。我需要在组中使用max,但我没有任何可用
mvid
和每组中的计数次数对结果进行分组
db.some_details.aggregate([
{$group: {_id: "$mvid", count: {$sum: 1}}}
])
现在,我想选择具有最大计数的组。以下是我天真的猜测:
db.some_details.aggregate([
{$group: {_id: "$mvid", count: {$sum: 1}}},
{$max: "count"}
])
显然,它会产生一个错误。我需要在组中使用max,但我没有任何可用于组的内容 聚合管道允许您包括另一个操作员管道,该管道将为您提供所有组的最大计数:
db.some_details.aggregate([
{
$group: {
_id: "$mvid",
count: { $sum: 1 }
}
},
{
$group: {
_id: 0,
maxCount: { $max: "$count" }
}
}
])
聚合管道允许您包括另一个操作员管道,该管道将为您提供所有组的最大计数:
db.some_details.aggregate([
{
$group: {
_id: "$mvid",
count: { $sum: 1 }
}
},
{
$group: {
_id: 0,
maxCount: { $max: "$count" }
}
}
])
同样有效的方法是对结果进行排序,然后仅使用第一个元素:
db.some_details.aggregate([
{$group: {_id: "$mvid", count: {$sum: 1}}},
{$sort: {"count": -1}},
{$limit: 1 }
])
与chridam的解决方案相比,我看到的优点是,您还可以获得具有最大计数的组的id,但我希望它会更慢(未测试)。同样有效的方法是对结果进行排序,然后仅使用第一个元素:
db.some_details.aggregate([
{$group: {_id: "$mvid", count: {$sum: 1}}},
{$sort: {"count": -1}},
{$limit: 1 }
])
与chridam的解决方案相比,我看到的优点是,您还可以获得具有最大计数的组的id,但我希望它会更慢(未经测试)。这是一个很好的解决方案,只是它不会返回具有最大计数的
mvid
。这是一个很好的解决方案,只是它不会返回具有最大计数的mvid
。