使用MongoDB聚合计数子数据

时间:2015-06-15 04:02:30

标签: mongodb aggregation-framework

这是我在mongodb中的数据:

AVAudioSessionCategoryPlayback

这是我的预期输出:

{
    "data": {
    "order_goods": [{
        "category": 235
    }, {
        "category": 666
    }]
    }
}, {
    "data": {
    order_goods: [{
        "category": 235
    }]
    }
}

我尝试了许多关于聚合的方法,例如{"category":235, "total":2} {"category":666, "total":1} ,但结果总是像:

$group

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

试试这个

db.test.aggregate([{ "$unwind":"$data.order_goods"}, {"$group":{_id:"$data.order_goods.category","count":{$sum:1}}}])

说明:当您尝试在没有$unwind的情况下进行分组时,mongodb认为order_goods的完整数组是唯一的,因此您需要首先进行$展开才能按个别类别进行分组。

答案 1 :(得分:0)

请尝试以下查询:

db.collection.aggregate(
 [
  { "$unwind": "$data.order_goods" },
  { "$group" : { "_id" : "$data.order_goods.category", 
    "total": {"$sum":1} } },
  { "$project" : { "category" : "$_id" , total : 1 }
 ]
 );