在MongoDB中获取给定日期范围内的文档

时间:2018-06-26 14:09:29

标签: mongodb

我在MongoDB中有一个名为goalsdata的数据库。有一个集合new_goals。该文档看起来像

{
    "_id" : ObjectId("5b2d0f71ee19fb0021e0000f0"),
    "method" : "GET",
    "action" : "goals",
    "request_time" : ISODate("2018-06-21T15:02:09.784Z")


},

{
    "_id" : ObjectId("5b2d0f71ee19fb0031e0000f0"),
    "method" : "GET",
    "action" : "goals",
    "request_time" : ISODate("2018-06-22T15:03:09.784Z")

},

{
    "_id" : ObjectId("5b2d0f71ee19fb0041e0000f0"),
    "method" : "GET",
    "action" : "goals",
    "request_time" : ISODate("2018-06-23T15:02:08.784Z")

},

{
    "_id" : ObjectId("6b2d0f71ee19fb001e0000f0"),
    "method" : "GET",
    "action" : "goals",
    "request_time" : ISODate("2018-06-24T15:02:07.784Z")

},

{
    "_id" : ObjectId("8b2d0f71ee19fb001e0000f0"),
    "method" : "GET",
    "action" : "countries_goals_exams",
    "request_time" : ISODate("2018-06-26T15:02:06.784Z")

}

有一个名为request_time的钥匙。我要查询并获取request_time范围在2018-06-192018-06-21之间的文档。

因此,2018-06-19 request_time不存在。因此,它将考虑给定范围并向我显示输出,

{
    "_id" : ObjectId("5b2d0f71ee19fb0021e0000f0"),
    "method" : "GET",
    "action" : "goals",
    "request_time" : ISODate("2018-06-21T15:02:09.784Z")


}

我可以使用此查询在MongoDB中获取最近一小时前的数据,

db.getCollection('new_goals').entity.find({ $and:[
    {
    "timestamp": {
        $gte: new Date(ISODate().getTime() - 1000 * 60 * 60)
    }}, 
    { 
    "timestamp": {
        $lte: ISODate()
    }}
]})

但是,我想使用键request_time和范围来获取数据。推荐的实现方法是什么?

1 个答案:

答案 0 :(得分:1)

您只需要相应地调整时间范围:

db.new_goals.find({
    request_time: {
        $gte: new Date('2018-06-19'), 
        $lt: new Date('2018-06-22')
    }
})