MongoDB:查找特定日期范围内的文档

时间:2018-03-08 08:49:15

标签: mongodb mongodb-query

以下是文档结构:

{
    _id : '993920022',
    data: 'dkow000afkkaso',
    timeStamp : '3/7/2018 10:13:36 AM'
}

我想查找特定日期范围内的数据,例如2018年3月1日到2018年3月1日,但我无法实现它,我的MongoDB查询是:

db.collection.find(
           {  'timeStamp' :
               {
                   $lte : Date('3/7/2018'),
                   $gte : Date('3/1/2018')
               }
           })

2 个答案:

答案 0 :(得分:1)

如果你的timeStamp字段不是Date对象而只是一个字符串,我怀疑你可以用$ lte和$ gte过滤它而没有转换。 可能一种工作方法可能是使用聚合框架投影的第一阶段,您可以转换ISODate中的字符串和匹配的第二阶段在哪里进行过滤。

这样的事情:

db.collection.aggregate([
{ $project: { data: "$data", timeStamp: ISODate("$timeStamp") } },
{ $match: { "timeStamp": { $lte: ISODate('3/7/2018'), $gte: ISODate('3/1/2018') }}}
]);

答案 1 :(得分:0)

尝试此查询:

let firstDate = new Date(pass value);
let lastDate = new Date(pass value);
db.collections.aggregate([
    {
        "$match":
            {
                "insertDate":
                    {
                        "$lte": lastDate,
                        "$gte": firstDate
                    }
            }
    }
])
.exec()
.then((result) => {
    //result
})
.catch((err) => {
    // error
});