在我的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()。如果我尝试输出任何东西,那么$ console中不存在'console'。
EDIT2: 这是我的架构,我目前无法访问我的Db,因此我无法提供示例文档。但是,我已经使用了数据(没有$ where,它只返回我拥有的所有内容)并且日期格式很好并且在前端正确转换为Date对象。
var WeatherData = new mongoose.Schema({
timeStamp: String,
lightLevel: Number,
temperature: Number,
pressure: Number,
humidity: Number,
windSpeed: Number,
windDirection: Number
});
EDIT3: 虽然问题已经解决,但我对任何其他不涉及'RegExp'
的方法感兴趣答案 0 :(得分:1)
您可以使用正则表达式查询日期,请尝试:
WheaterData.find( {timeStamp: new RegExp("^YYYY-MM-DD","i") } )
它将以YYYY-MM-DD格式返回与给定日期匹配的所有文档。