如何使用MongoDB计算单个字段的平均值?

时间:2016-06-24 09:57:18

标签: php mongodb mongodb-query

我在该集合字段中的集合是状态。状态为arrayIndex格式。收集样本如下      enter image description here 我必须计算平均值0,1和2后计算我想要的结果这个格式如下所示

    {
  "result": [
    {
      "0": 18,
      "1": 58,
      "2": 24
    }
  ]
}

是否可以以上述格式制作结果。如果是,请建议我如何计算平均值?

1 个答案:

答案 0 :(得分:2)

运行聚合操作以获取给定数组中第一,第二和第三状态的平均值的mongodb shell查询如下:

var pipeline = [
    { 
        "$match": { 
            "Status.0": { $exists: true },
            "Status.1": { $exists: true },
            "Status.2": { $exists: true }
        }
    },
    { "$unwind": "$Status" },
    { 
        "$match": { 
            "Status.0": { $exists: true },
            "Status.1": { $exists: true },
            "Status.2": { $exists: true }
        }
    },
    {
        "$group": {
            "_id": null,
            "0": { "$avg": "$Status.0" },
            "1": { "$avg": "$Status.1" },
            "2": { "$avg": "$Status.2" }
        }
    }
]

db.status.aggregate(pipeline);