Я пытаюсь извлечь последние доступные ежедневные измерения из "разреженной" коллекции, в которой не может быть измерений для каждого дня. Я заинтересован в получении всего оригинального документа в качестве вывода. Коллекция содержит несколько серий измерений, идентифицированных по уникальному идентификатору.
Например, для следующей коллекции:
{ "date" : "2019-04-10", "id" : 1, "measurement" : 50 }
{ "date" : "2019-04-10", "id" : 2, "measurement" : 1 }
{ "date" : "2019-04-10", "id" : 3, "measurement" : 33 }
{ "date" : "2019-04-11", "id" : 1, "measurement" : 52 }
{ "date" : "2019-04-11", "id" : 3, "measurement" : 3 }
{ "date" : "2019-04-12", "id" : 1, "measurement" : 55 }
{ "date" : "2019-04-12", "id" : 2, "measurement" : 12 }
Приведенный выше сборник содержит измерения для 3 идентификаторов. Я хочу получить последние измерения для каждого идентификатора.
Например, приведенная выше коллекция должна дать следующий результат:
{ "date" : "2019-04-12", "id" : 1, "measurement" : 55 }
{ "date" : "2019-04-12", "id" : 2, "measurement" : 12 }
{ "date" : "2019-04-11", "id" : 3, "measurement" : 3 }
Пока что я могу извлечь самую последнюю дату для каждого идентификатора с помощью этого:
db.control_subs.aggregate([ { $group : { _id : "$id", "last_date" : { $max : "$date" } } }, { $sort:{ "_id": 1 }} ])
Но это, к сожалению, удаляет фактическое поле measurement
из вывода.
Как я могу получить желаемый результат с помощью одного запроса MongoDB?