我需要一些帮助,在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');
   }
 });

找不到该对象.如果我从对象中删除最后一个_更新的字段,它就会被找到,所以它肯定是问题所在.

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

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

什么也不会回来.请问我做错了什么?

推荐答案

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

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') 
}

判断以下问题:

Mongodb相关问答推荐

最有效的Mongo聚合来展开和过滤:匹配、展开、匹配与投影和过滤

如何在Mongo中查找数组中的特定对象

在mongo聚合管道的组阶段排除字段,但在最后将其包含在内

将子元素的数组值提取到 mongodb 中的单个数组中?

更新值导致错误 Golang MongoDB

找到一个用户,然后使用 MongoDB 根据他们的总分获得他们的排名

使用 $addFields 将字段添加到 $lookup 结果中的每个项目

如何将 MongoDB 集合中的 _id 字段更改为 User_id?

mongo _id 字段重复键错误

Mocking/stubbing mongoose模型保存方法

使用 MongoDB 更新数组字段内的特定键/值

具有多个字段的mongodb文本搜索

如何使用 c# 2.0 驱动程序将数据插入到 mongodb 集合中?

从每个组中 Select 前 N 行

majority和 linearizable的区别

无法将 Mongoose 连接到 Atlas

更新时提示Field name duplication not allowed with modifiers

Mongodb - 如何在多个字段中查找字符串?

在 mongoose 中使用 UUID 进行 ObjectID 引用

MongoDB Compass timeouts超时