#mongodb #mongodb-query
#mongodb #mongodb-запрос
Вопрос:
Учитывая следующую схему базы данных:
{
'_id': 5079,
'name': 'Lincoln County',
'state': 'AR',
'population': 13024,
'cases': [{'date': '2020-03-16', 'count': 1}, {'date': '2020-03-22', 'count': 1},
{'date': '2020-03-24', 'count': 1}, {'date': '2020-03-26', 'count': 2}],
'deaths': [{'date': '2020-03-27', 'count': 1}, {'date': '2020-04-02', 'count': 1},
{'date': '2020-05-28', 'count': 2}, {'date': '2020-05-30', 'count': 1}]
}
Какая функция MongoDB MapReduce будет генерировать коллекцию общего количества случаев covid19 для каждого состояния. Сгенерируйте одну запись для каждого состояния с его 2-буквенной аббревиатурой и общим количеством случаев covid?
Комментарии:
1. Пожалуйста, предоставьте код, который вы пытались достичь результата, это позволит сообществу помочь вам лучше.
Ответ №1:
Попробуйте этот запрос:
db.collection.aggregate([
{
"$project": {
"total": {
"$sum": {
"$map": {
"input": "$cases",
"as": "c",
"in": "$$c.count"
}
}
},
"state": 1
}
}
])
Пример здесь
Запрос используется $map
для создания массива со значениями из cases.count
, а затем $sum
этих значений.
Кроме того, поля вывода count
— это те, которые содержат $sum
и состояние использования state: 1
.