Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB最大组内结果_Mongodb_Max_Aggregation Framework - Fatal编程技术网

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