2016-03-28 158 views
-1

我有数据MongoDB的分组由数组元素

{ 
    "_id" : 42, 
    "status" : "active", 
    "items" : [ 
     { 
      "sku" : "00e8da9b", 
      "qty" : 1, 
      "item_details" : { 
       "A" : 1, 
       "B" : 2 
      } 
     }, 
     { 
      "sku" : "0ab42f88", 
      "qty" : 2, 
      "item_details" : { 
       "A" : 1, 
       "B" : 3 
      } 
     }, 
     { 
      "sku" : "0ab42f88", 
      "qty" : 3, 
      "item_details" : { 
       "C" : 3, 
       "D" : 4 
      } 
     }, 
     { 
      "sku" : "0ab42f88", 
      "qty" : 4, 
      "item_details" : { 
       "D" : 5, 
       "E" : 6 
      } 
     } 
    ] 
} 
{ 
    "_id" : 43, 
    "status" : "active", 
    "items" : [ 
     { 
      "sku" : "00e8da9b", 
      "qty" : 1, 
      "item_details" : { 
       "A" : 1, 
       "C" : 2 
      } 
     }, 
     { 
      "sku" : "0ab42f88", 
      "qty" : 4, 
      "item_details" : { 
       "D" : 2, 
       "E" : 3 
      } 
     } 
    ] 
} 

我要计数数量的总和为每个SKU。

+1

添加适当的文字一些细节格式 –

回答

1

如果你希望得到的qtysku分组的总和,就可以轻松实现,使用聚合:

db.collection.aggregate(
    [ 
    { 
     $unwind: "$items" 
    }, 
    { 
     $group: { 
     _id: "$items.sku", 
     Count: {$sum: "$items.qty"} 
     } 
    } 

    ] 
); 

结果:

{ 
    "_id" : "00e8da9b", 
    "Count" : NumberInt(2) 
} 
{ 
    "_id" : "0ab42f88", 
    "Count" : NumberInt(13) 
}