Javascript MongoDb以字符串形式存储时按日期查找
在我的MongoDb(使用Mongoose)中,我将日期存储为utc和ISO格式的字符串。 现在我想按日期搜索记录,但我不知道如何搜索Javascript MongoDb以字符串形式存储时按日期查找,javascript,mongodb,mongoose,Javascript,Mongodb,Mongoose,在我的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 n
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,它只返回我所有的数据),并且日期格式很好,在前端正确地转换为日期对象
var WeatherData = new mongoose.Schema({
timeStamp: String,
lightLevel: Number,
temperature: Number,
pressure: Number,
humidity: Number,
windSpeed: Number,
windDirection: Number
});
编辑3:
虽然问题已经解决,但我对不涉及“RegExp”的任何其他方法感兴趣。您可以使用regex查询日期,请尝试:
WheaterData.find( {timeStamp: new RegExp("^YYYY-MM-DD","i") } )
它将以YYYY-MM-DD格式返回与给定日期匹配的所有文档。您可以使用正则表达式查询日期,请尝试:
WheaterData.find( {timeStamp: new RegExp("^YYYY-MM-DD","i") } )
它将以YYYY-MM-DD格式返回与给定日期匹配的所有文档。为什么在第二个
getTime
中没有调用该函数?是错别字吗?是的,问问题时是错别字。但是没有解决问题。为什么在第二个getTime
中不调用该函数?是错别字吗?是的,问问题时是错别字。但无法解决问题。这是可行的,但您是否有机会解释“^YYYY-MM-DD”的工作原理?你做什么?我该怎么做呢?没关系,我想出来了。WeatherData.find({timeStamp:new RegExp(“^(2016-02-18 | 2016-02-19)”,“i”)})运算符将在字符串开头匹配。使用它将使比较更快,更不容易出错。这是可行的,但您是否有机会解释“^YYYY-MM-DD”是如何工作的?你做什么?我该怎么做呢?没关系,我想出来了。WeatherData.find({timeStamp:new RegExp(“^(2016-02-18 | 2016-02-19)”,“i”)})运算符将在字符串开头匹配。使用它将使比较更快,更不容易出错。