我在MongoDB中有一个集合。型号是:
{
currency: String,
price: Number,
time: Date
}
每当货币的官方汇率发生变化时,文档就会记录到该集合中。
给了我一个时间戳,我需要获取该时间之前所有可用货币的汇率。因此,首先我需要过滤所有其时间为$ lte然后需要的文档,然后只需要获取具有最大时间戳的文档。对于每种货币。
答案 0 :(得分:1)
看到您的要求后,我想您想要最大的价格和时间,请使用max operator
db.collection.aggregate(
[
{
$group:
{
_id: "$currency",
time: { $max: "$time"},
price: { $max: "$price" }
}
}
]
)
答案 1 :(得分:0)
您可以使用mongo聚合函数来执行此操作。请找到以下示例:
db.<collection_name>.aggregate([
// First sort all the docs by time in descending
{$sort: {time: -1}},
// Take the first 3 of those
{$limit: 3}
])
希望这会有所帮助!