Вы можете использовать следующие методы для вычисления среднего значения поля в MongoDB:
Метод 1: вычислить среднее значение поля
db.collection.aggregate([{ $group : {_id: null , avg_val:{$avg:" $valueField "}}}])
Метод 2: вычислить среднее значение поля по группе
db.collection.aggregate([{ $group : {_id:" $groupField", avg_val:{$avg:" $valueField "}}}])
В следующих примерах показано, как использовать каждый метод с набором команд со следующими документами:
db.teams.insertOne({team: " Mavs", points: 30, rebounds: 8})
db.teams.insertOne({team: " Mavs", points: 30, rebounds: 12})
db.teams.insertOne({team: " Spurs", points: 20, rebounds: 7})
db.teams.insertOne({team: " Spurs", points: 25, rebounds: 5})
db.teams.insertOne({team: " Spurs", points: 25, rebounds: 9})
Пример 1: Расчет среднего значения поля
Мы можем использовать следующий код для вычисления среднего значения поля точек :
db.teams.aggregate([{ $group : {_id: null , avg_val:{$avg:" $points "}}}])
Этот запрос возвращает следующие результаты:
{ _id: null , avg_val: 26 }
Из результатов мы видим, что среднее значение в поле очков равно 26 .
Мы можем вручную проверить это правильно, рассчитав среднее значение точек вручную:
Среднее количество баллов: (30 + 30 + 20 + 25 + 25) / 5 = 26 .
Пример 2. Расчет среднего значения поля по группе
Мы можем использовать следующий код для вычисления среднего значения поля очков , сгруппированного по полю команды :
db.teams.aggregate([{ $group : {_id:" $team", avg_val:{$avg:" $points "}}}])
Этот запрос возвращает следующие результаты:
{ _id: ' Spurs', avg_val: 23.333333333333332 }
{ _id: ' Mavs', avg_val: 30 }
По результатам мы видим:
- Среднее значение очков для шпор составляет 23,33 .
- Среднее количество баллов для Mavs составляет 30 .
Примечание.Полную документацию по функции $avg можно найти здесь .
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные операции в MongoDB:
MongoDB: как добавить новое поле
MongoDB: как удалить поле
MongoDB: как группировать и считать
MongoDB: как сгруппировать по нескольким полям