#mongodb #aggregation-framework #aggregation
Вопрос:
У меня есть что-то вроде:
[
{
....
a: 100
b: 60
},
{
....
a: 130
b: 40
},
{
....
a: 120
b: 60
}
]
и я хочу вычислить:
сумма(a)/сумма(b): (350/160) и поместите ее в новое поле
Заранее спасибо
Комментарии:
1. Вы можете выполнить обновление с помощью функции конвейера обновления с агрегацией. Для выполнения вычислений существуют арифметические операторы агрегации.
Ответ №1:
Сначала вы должны использовать $group
, чтобы получить сумму всех a и b (сгруппировать по _id:1
), затем использовать $project
, чтобы получить a/b
(игровая площадка Монго):
db.collection.aggregate([
{
"$group": {
"_id": 1,
"sumA": {
"$sum": "$a"
},
"sumB": {
"$sum": "$b"
},
}
},
{
"$project": {
"aDIVb": {
"$divide": [
"$sumA",
"$sumB"
]
}
}
}
])
Ссылки: $группа, $сумма, $проект и $разделение