在特定时间范围内获取文档的最佳方式 MongoDB

Best way to get documents in specific timeframe MongoDB

我正在创建一个脚本,它会在每 x 分钟后 运行 并且需要按时间戳从 MongoDB 收集数据。

例如,我如何将文档与具有以下时间范围内的时间戳的聚合匹配:

start_time = current_time - 60 min
end_time = start_time + 30 min

而且我需要获取该时间范围内的所有文档。 MongoDB 个对象上有 ISODate 时间戳。

谢谢!

您可以在 mongo shell 中创建日期对象,如下所示:

db.getCollection('order').aggregate([
{
$match : { 
    start_time : {$gte :  new Date(ISODate().getTime() - 1000 * 60 * 60)},
    end_time : {$lte :  new Date(ISODate().getTime() + 1000 * 60 * 30)}
    }
}
...
])

您可以在聚合中使用它,也可以在正常的查找查询中使用它。

注意我写这个没有测试,所以它可能有语法错误..

db.collection.find({"createdAt": { $gt: 新日期('2017-04-25')},"updatedAt":{$lt:新日期('2017 -06-25')}})

updatedAt 和 createdAt 是我在按时间戳设计模式时采用的字段。你可以根据你的设计给字段。

在这种情况下,查找查询会比聚合好一点,因为不必执行复杂的函数