我的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
}
}
答案 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" }
} }
] )