1

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

有没有办法我可以编写一个聚合查询来将类别内的所有值与日期上的谓词相加,例如 Date:/20130202/ 这样它会获取从 20130202 开始的所有行,并且还总结了运动、国家、int 的值,财务等并输出值,即。

体育: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
  }

}

4

1 回答 1

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" }   
              } }
] )
于 2013-06-21T21:31:55.397 回答