MongoDB max在组结果中



我根据mvid和每组中计数的出现次数对结果进行分组。

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

现在,我想选择具有最大计数的组。这是我天真的猜测:

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

很明显,它会产生一个错误。我需要在group中使用max,但我没有任何要分组的内容。

也可以对结果进行排序,然后只使用第一个元素:

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

与Chrdam的解决方案相比,我看到的优势是,您还可以获得具有最大计数的组的id,但我预计它会更慢(未测试)。

聚合管道允许您包括另一个$group操作员管道,该管道将为您提供所有组的最大计数:

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

相关内容

  • 没有找到相关文章

最新更新