Mongodb查询聚合文档

时间:2013-06-20 18:48:47

标签: mongodb aggregation-framework

我的mongodb集合中有很多这样的行。请注意,在“类别”中有许多键值对。

有没有办法可以编写一个聚合查询来对类别中的所有值进行求和,并在日期上添加谓词:/ 20130202 /所以它从20130202开始获取所有行,并总结运动值,国家,国际金融,金融等,并输出价值,即。

  

运动:42,国家:6,国际:11,金融:9,其他:17,科技:20,音乐:34

{ 
  "_id" : ObjectId("51c34a871d56bd16c34e7887"),
  "Date" : "2013020219",
  "category" : { 
    "sport" : 40,
    "national" : 2,
    "international" : 6, 
    "finance" : 2,
    "others" : 16,
    "tech" : 10,
    "Music" : 32
  }
}
{ 
  "_id" : ObjectId("51c34a871d56bd16c34e7887"),
  "Date" : "2013020218",
  "category" : { 
    "sport" : 2,
    "national" : 4,
    "international" : 5,
    "finance" : 7,
    "others" : 1,
    "tech" : 10,
    "Music" : 2
  }

}

1 个答案:

答案 0 :(得分:1)

您可能想尝试:

db.coll.aggregate( [
   { $match: { Date: /20130202/ } },
   { $group: { _id: null,
                sport: { $sum: "$category.sport" },
                national: { $sum: "$category.national" },
                international: { $sum: "$category.international" },
                finance: { $sum: "$category.finance" },
                others: { $sum: "$category.others" },
                tech: { $sum: "$category.tech" },
                Music: { $sum: "$category.Music" }   
              } }
] )