我正在尝试在 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 中做类似的事情?聚合框架非常强大,但我想不出使用它进行此类分析的方法。
非常感谢您的帮助。