猫鼬无法按日期获取收藏集

时间:2019-09-09 14:03:29

标签: javascript html node.js mongoose

我无法按日期查询集合过滤

以下代码是我到目前为止的

//The following code shows how my schema is:

date: {type: Date, required: true}

//This is a date from a collection in MongoDB:
date: 2019-09-06T16:48:14.000+00:00

//This is how I saved the date in the MongoDB:
"2019/09/09 08:55:15"

//And this is how I perform the query in NodeJS:

let year = req.query.year;
let month = req.query.month;
let day = req.query.day;

let startDate = new Date(year, month, day);
let endDate = new Date(year, month, day);

// find documents in MongoDB
let query = SALES.find({ date: { $gte: startDate, $lte: endDate }});

// execute the query at a later time
query.exec(function (err, item) { // item is a dictionary
    if (err) return handleError(err); // throws an error if any
    if (item === null || item.length === 0) {
        res.json({
            status: 'empty',
        });
    }
    else {
        res.json({
            salesRecord: item
        });
     }
});

我读到它很容易获得,但是我做不到。欢迎任何帮助?

我没有查询错误,只是我得到的响应为空。 预期结果是从指定日期获取日期

1 个答案:

答案 0 :(得分:0)

简短答案

您保存的日期(“ 2019/09/09 08:55:15”)被视为字符串。

尝试一下:

db.mycollection.find({
    "date" : {"$gte": new Date()}
})

db.mycollection.find({
    "date" : {"$gte": ISODate(new Date())} // current date
});

说明

Mongodb shell提供了多种返回日期的方法,它可以是字符串或作为Date对象:

  1. Date()方法,以字符串形式返回当前日期。
  2. 新的Date()构造函数,该构造函数使用ISODate()包装器返回Date对象。
  3. ISODate()构造函数,该构造函数使用ISODate()包装器返回Date对象。