Я пытаюсь построить временной ряд в базе данных Mongo и, основываясь на советах из нескольких сообщений SO, я использую один документ для каждого события, например:
{
_id: ObjectId("51a67033868eda7666b0a49c"),
station_id: 12,
timestamp: ISODate("2013-05-29T21:16:35.929Z"),
value: 50
}
Получить историю для конкретной станции достаточно просто(db.mydata.find({station_id: 12}, {timestamp: 1})
).
Более сложной задачей является получение последнего значения на всех моих станциях. (Обратите внимание, что последняя отметка времени будет разной для каждой станции, поэтому я не могу выполнить наивный запрос.) В SQL я бы сделал:
SELECT station_id, timestamp, value
FROM mydata
WHERE (station_id, timestamp) IN (
SELECT station_id, MAX(timestamp)
FROM mydata
GROUP BY station_id
)
Как бы вы сделали что-то подобное в MongoDB? Структура агрегации довольно мощная, но я не могу найти способ использовать ее для такого типа анализа.
Большое спасибо за любую помощь.