如何使用mongoose在MongoDB中的Date字段上创建查询?

时间:2014-10-30 15:33:57

标签: javascript node.js mongodb mongoose

我正在尝试查询Mongo数据库中的集合,以获取日期范围内Time字段的所有记录。 Time在数据库中定义为日期 我的环境:Node.js,Express,Jade,javascript。

这是javascript代码:

var query = {};
var timeQuery = {};
timeQuery["$lt"] = new Date().toISOString();
query["Time"] = timeQuery;
console.log(query);
db.model('testruns').find(query).exec(function (err, testruns) {
    console.log(testruns.length);
    // doing something
});

结果打印到控制台:

  

{时间:{'$ lt':'2014-10-30T15:04:39.256Z'}}
  0

查询返回0结果(应该有更多)

顺便说一句......来自RoboMongo的运行日期查询返回结果,只是错误的结果。例如:

db.testruns.find({Time : {"$gte" : new Date("2014-10-30T15:13:37.199Z")}})

返回所有记录。

我尝试了什么: This onethat oneanother one,当然是mongoose文档,还有更多谷歌搜索结果。

他们中的大多数都给出了相同的答案,但没有一个适合我。帮助!

2 个答案:

答案 0 :(得分:0)

到目前为止,我看到你没有在查询中包含要引用的字段,你可以试试这个: 我假设您的字段名称是' time'

var date = new Date(); //or the date you want to compare
db.model('testruns').find({"Time":{"$lt":date}}).exec(function (err, testruns) {
    console.log(testruns.length);
    // doing something
});

答案 1 :(得分:0)

问题与架构定义有关,而不是与此代码直接相关。查询的代码是正确的。模式定义将此字段(Time)作为String,这导致MongoDB尝试在日期字段中查找字符串...