MongoDB 最大组结果

MongoDB max in group results

我按 mvid 和每组中的出现次数对结果进行了分组。

db.some_details.aggregate([
{$group: {_id: "$mvid", count: {$sum: 1}}}
])

现在,我想 select 以最大计数分组。这是我天真的猜测:

db.some_details.aggregate([
{$group: {_id: "$mvid", count: {$sum: 1}}},
{$max: "count"}
])

显然,它会产生错误。我需要将 max 与 group 一起使用,但我没有任何可分组的东西。

聚合管道允许您可以包含另一个 $group 运算符管道,这将为您提供所有组的最大数量:

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,但我预计它会更慢(未测试)。