MongoDB最大计数

时间:2015-10-21 15:32:13

标签: mongodb mongodb-query

文件结构: userId,name,product(Array)

要求: 需要找到拥有最多产品数量的userId。

尝试使用以下查询1计算userId的数字产品,但不确定如何找到其中的最大值

查询1:

db.things.aggregate({$project:{id:"$userId",count:{$size:{"$ifNull":["$Product",[]]}}}})

结果:

  

Id:1计数:0

     

Id:2计数:7

     

Id:3次:10次

结束输出应该是这样的:

  

Id:3次:10次

1 个答案:

答案 0 :(得分:3)

您需要在$sortcount,而不是$limit排序结果数为1,才能获得计数最多的文档:

db.things.aggregate([ 
    {$project:{ id: "$userId", count: {$size:{"$ifNull":["$Product",[]]} } }}, 
    {$sort : {count : -1}}, 
    {$limit : 1 }
])

使用'$max'运算符时,您需要按_id=null(或其他常量,所有文档必须在同一组中,以计算其中的最大值)来执行组,而不是获得最大值但是,如果没有排序操作,则无法在聚合管道中获取用户的id。

db.things.aggregate([

    {$project:{
        id: "$userId", count: {$size:{"$ifNull":["$Product",[]]} }
    }},
    {$group: {
        _id: null, 
        max: { $max: "$count" }
    }}
])