MongoDB使用聚合

时间:2015-10-30 19:24:49

标签: mongodb aggregation-framework

我在集合中有以下数据。

[
    {name: "a", status: 1},
    {name: "a", status: 2},
    {name: "a", status: 3},
    {name: "b", status: 1},
    {name: "b", status: 4},
    {name: "c", status: 1},
    {name: "c", status: 1},
    {name: "c", status: 5}
]

我希望将其转换为:

{
    names: ["a", "b", "c"],
    statuses: [1, 2, 3, 4, 5],
    count: [
        [1, 1, 1, 0, 0],
        [1, 0, 0, 1, 0],
        [2, 0, 0, 0, 1]
    ]
}

说明:

  1. 名称将具有唯一的名称属性列表
  2. 状态将具有唯一的状态属性列表
  3. Count包含每个名称的状态计数数组
    1. 例如,第一个计数数组是[1,1,1,0,0]
    2. 这意味着:
      1. 只有一个状态:1代表名称
      2. 只有一种状态:名称为2,依此类推......
    3. 如果你拿第3个数组[2,0,0,0,1]
      1. 名称c的状态为:1次
      2. 没有2或3或4,但它有一个5
  4. 您能否建议相应的聚合函数或等效函数?

    编辑: 我到目前为止只是这样:

    db.collection1.aggregate([
      {
        $group: {
          _id: {environment: "$name", status: "$status"}, 
          count:{$sum: 1}
        }
      }
    ])
    

    谢谢

0 个答案:

没有答案