MongoDB按数组元素分组

时间:2016-03-28 17:37:51

标签: 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 个答案:

答案 0 :(得分:1)

如果您希望得到qty的{​​{1}}总和,您可以使用聚合轻松实现这一目标:

sku

结果:

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

  ]
);