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

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

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

最佳答案

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

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 + nodejs : how to query ISODate fields?
  • ISODate is not defined

https://stackoverflow.com/questions/21286599/

相关文章:

javascript - MongoDB分页的范围查询

mongodb - 在 MongoDB 中搜索多个集合

mongodb - 聚合框架中的 $skip 和 $limit

shell - 为 MongoDB shell 设置默认数据库

javascript - 在 Node.js 中进行同步 MongoDB 查询的正确方法是什么?

mongodb - 列出mongodb中某个字段的所有值

javascript - Mongoose 保存与插入与创建

mongodb - 限制 MongoDB 中的结果但​​仍然获得完整计数?

mongodb - 你如何告诉 Mongo 在限制结果之前对集合进行排序?

codeigniter - 使用 MongoDB 从数组中删除特定项目