我正在创建一个在每x分钟后运行的脚本,需要通过时间戳从MongoDB收集数据。
例如,如何将文档与在以下时间范围内具有时间戳的聚合匹配:
start_time = current_time - 60 min
end_time = start_time + 30 min
我需要获得保留在该时间范围内的所有文件。 MongoDB对象上有ISODate时间戳。
谢谢!
答案 0 :(得分:2)
您可以在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)}
}
}
...
])
您可以在聚合中使用此功能,也可以在常规查找查询中使用此功能。
注意我在没有测试的情况下写了这个,所以它可能有语法错误..
答案 1 :(得分:1)
db.collection.find({“createdAt”:{$ gt:new Date('2017-04-25')},“updatedAt”:{$ lt:new Date('2017-06-25') }})
updatedAt和createdAt是我在按时间戳设计架构时所采取的。你可以根据你的设计给出场地。
在这种情况下,查找查询会比聚合更好,因为不需要执行复杂的函数