mongodb查询以获取两个日期范围内的文档

时间:2016-01-06 07:26:29

标签: node.js mongodb date

我的文档有一个日期类型如下的字段。

{ 
    "_id" : ObjectId("568bae0fcfe23a50879d45fc"),
    "data": {
          "createdDate" : ISODate("2015-12-17T22:25:24.973+0000")
    }
}

如何获取 data.createdDate < = todayDate和 data.createdDate > = todayDate-20days的所有文档。

我尝试使用以下查询,这工作正常。

db.myTable.aggregate([
    {$match: {"data.createdDate": {$lte: new Date(), $gte: new Date(new Date().setDate(new Date().getDate()-20))}}}
])

但此查询也考虑时间。我只想比较日期。

1 个答案:

答案 0 :(得分:2)

如果你想比较日期,你应该将createdDate设置为小时,分钟,秒和毫秒,然后再存储到数据库中。

如果你在db中有这样的日期,请尝试以下查询

 db.collection.aggregate([
    {$match: {"data.createdDate": {$lte: new Date().setHours(0,0,0,0), $gte: new Date(new Date().setDate(new Date().getDate()-20)).setHours(0,0,0,0)}}}
])