在我的 MongoDb(使用 Mongoose)中,我将日期存储为 utc 和 ISO 格式的字符串。 现在我想按日期搜索记录,但我不知道如何进行。
Data.find()
.$where(function() {
return new Date(this.timeStamp).getTime() > new Date('2016-1-1').getTime();
})
.exec(function(err, wData) {
if(err) {return next(err);}
res.json(wData);
});
问题是 $where 由于某种原因删除了所有通用函数,并且“getTime()”不是该对象的方法。
在不更改架构来存储“日期”的情况下,我将如何执行此操作。
编辑:我也尝试过 Date.parse()。如果我尝试输出任何内容,$where 中也不存在“console”。
编辑2: 这是我的架构,我目前无法访问我的数据库,所以我无法提供示例文档。但是,我已经在使用数据(没有 $where,它只是返回我拥有的所有内容),并且日期格式很好,并在前端正确转换为 Date 对象。
var WeatherData = new mongoose.Schema({
timeStamp: String,
lightLevel: Number,
temperature: Number,
pressure: Number,
humidity: Number,
windSpeed: Number,
windDirection: Number
});
编辑3: 虽然问题已经解决,但我对任何其他不涉及“RegExp”的方法感兴趣
最佳答案
您可以使用正则表达式查询日期,尝试:
WheaterData.find( {timeStamp: new RegExp("^YYYY-MM-DD","i") } )
它将以 YYYY-MM-DD 格式返回与给定日期匹配的所有文档。
关于javascript - MongoDb 当存储为字符串时按日期查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35476776/