2014-10-29 83 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