2014-10-29 82 views
-1

問題的MongoDB的MongoDB的犯規給正確的結果

我有一個集合在我的MongoDB有以下colums:

{"_id" : ObjectId("5443cddc425e215c7290a179"), "orderid" : 1002854, "customerid" : 45978, "campaignid" : 2141, "orderdate" : "2009-10-13 00:00:00", "city" : "NEWTON", "state" : "MA", "zipcode" : 2459, "paymenttype" : "VI", "totalprice" : 190, "numorderlines" : 3, "numunits" : 3} 

有239級不同CAMPAIGNID的,它都應該具有的價值1,但他們都有0.

現在,我想每個campaignid的numunits總數分組,我使用以下語句:

db.orders.aggregate({$group: {_id: "$campaignid", Numunits: {$sum:" $numunits"}}}) 

這還給了以下結果:

{ "_id" : 2146, "Numunits" : 0} , { "_id" : 2111, "Numunits" : 0} etc... 

現在預期的結果是:如果任何

{ "_id": 2146, "Numunits" : 93} , { "_id" : 2111, "Numunits" : 23} etc.. 
+1

我想要更多的信息來重現問題或者理解你的期望。你怎麼知道這個號碼是不正確的? – 2014-10-29 20:28:21

+0

請舉例說明您的數據,您對該數據的期望結果以及取得的結果。 – Philipp 2014-10-29 20:33:47

+0

更多信息編輯 – 2014-10-29 20:41:29

回答

0

蒙戈不會爲你修剪的空間。試試這個:

db.orders.aggregate(
    [ 
     {$group: { 
      _id: "$campaignid", 
      Numunits: {$sum:"$numunits"} 
      } 
     } 
    ]) 
+0

謝謝,這工作,有沒有什麼辦法可以選擇像基於這個查詢的集合中前10名最高總和? – 2014-10-29 22:55:26

+0

db.orders.aggregate( [ {$組:{ _id: 「$ CAMPAIGNID」, Numunits:{$總和: 「$ numunits」}} } , {$排序:{Numunits:-1 }, {$ limit:10 ]) – anhlc 2014-10-29 23:01:16

+0

如果我想添加額外的柱子,該怎麼辦?所以就像我想通過campaignid和productid進行分組? – 2014-11-02 20:45:14