一尘不染

使用MongoDB和Nodejs插入和查询日期

node.js

我需要一些帮助,以便在mongodb和nodejs中按日期查找记录。

我将日期添加到抓取脚本中的json对象中,如下所示:

jsonObj.last_updated = new Date();

该对象被插入到mongodb中。我可以看到如下:

 "last_updated" : "2014-01-22T14:56:59.301Z"

然后在我的nodejs脚本中执行findOne():

 var jObj = JSON.parse(line.toString());

 collection.findOne(jObj,function(err, doc) {
   if (doc){
     console.log(doc._id);
   } else  {
     console.log('not found');
   }
 });

找不到对象。如果我从对象中删除last_updated字段,则会找到它,因此绝对是问题所在。

如果我按以下方式隔离字段:

collection.findOne({last_updated: '2014-01-22T14:56:59.301Z'},function(err, doc) {
  if (doc){
    console.log(doc._id);
  } else  {
    console.log('not found');
  }
});

什么也没有回来。请问我做错了什么?


阅读 457

收藏
2020-07-07

共1个答案

一尘不染

您需要传递日期对象,而不是日期字符串。

collection.findOne({last_updated: new Date('2014-01-22T14:56:59.301Z')},function(err, doc) {

MongoDB驱动程序会将其转换为ISODate

{ 
   "_id" : ObjectId("52dfe0c469631792dba51770"), 
   "last_updated" : ISODate('2014-01-22T14:56:59.301Z') 
}
2020-07-07