2013-06-20 266 views
1

我在我的mongodb集合中有很多像這樣的行。請注意,在「類別」中有許多鍵值對。Mongodb查詢彙總文檔

有沒有一種方法,我可以編寫一個聚合查詢,以總結類別內的所有值與日期謂詞像Date/20130202/so所以它提取所有行從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

看起來好像你只是寫一個聚合來分組數據,然後'$ sum'每個'category'的名稱('category.sport')。 – WiredPrairie

回答

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" } 
       } } 
])