Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript MongoDb以字符串形式存储时按日期查找_Javascript_Mongodb_Mongoose - Fatal编程技术网

Javascript MongoDb以字符串形式存储时按日期查找

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

在我的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,它只返回我所有的数据),并且日期格式很好,在前端正确地转换为日期对象

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”)})运算符将在字符串开头匹配。使用它将使比较更快,更不容易出错。