来自数据库的汇总费率

时间:2018-10-09 13:16:25

标签: mongodb

我在MongoDB中有一个集合。型号是:

{
  currency: String,
  price: Number,
  time: Date
}

每当货币的官方汇率发生变化时,文档就会记录到该集合中。

给了我一个时间戳,我需要获取该时间之前所有可用货币的汇率。因此,首先我需要过滤所有其时间为$ lte然后需要的文档,然后只需要获取具有最大时间戳的文档。对于每种货币。

2 个答案:

答案 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}
    ])

希望这会有所帮助!