Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.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
Node.js 使用FindOne(通过Nodejs本机驱动程序)按日期范围查询MongoDb_Node.js_Mongodb - Fatal编程技术网

Node.js 使用FindOne(通过Nodejs本机驱动程序)按日期范围查询MongoDb

Node.js 使用FindOne(通过Nodejs本机驱动程序)按日期范围查询MongoDb,node.js,mongodb,Node.js,Mongodb,我试图在我的FindOne语句中使用日期范围查询MongoDb,但我无法让它工作。我正在使用Nodejs本机驱动程序。我尝试了各种选择,但都没有返回预期的记录 这是我的伪代码- console.log(sDate); // displays Fri Jun 20 2014 10:00:00 GMT+1000 (AUS Eastern Standard Time) var sDateISO = sDate.toISOString(); console.log

我试图在我的
FindOne
语句中使用日期范围查询MongoDb,但我无法让它工作。我正在使用Nodejs本机驱动程序。我尝试了各种选择,但都没有返回预期的记录

这是我的伪代码-

console.log(sDate);                    // displays  Fri Jun 20 2014 10:00:00 GMT+1000 (AUS Eastern Standard Time)
var sDateISO = sDate.toISOString();
console.log(sDateISO);                 // displays  2014-06-20T00:00:00.000Z 

// all of these return null object
db.collection('events').findOne(
  { eventStartDate: { $lte: new Date(sDate)}},
  function(err, obj) { console.dir(obj); }        // displays  null
);

db.collection('events').findOne(
  { eventStartDate: { $lte: (sDate) }},
  function(err, obj) { console.dir(obj); }        // displays  null
);

db.collection('events').findOne(
  { eventStartDate: { $lte: new Date(sDateISO) }},
  function(err, obj) { console.dir(obj); }        // displays  null
);

db.collection('events').findOne(
  { eventStartDate: { $lte: (sDateISO) }},
  function(err, obj) { console.dir(obj); }        // displays  null
);
但是,如果我在RoboMongo中运行此命令,记录将按预期返回-

==========

更新

我的问题在代码的其他地方——我在传递给
FindOne
查询的单独参数中遇到了类型不匹配的问题

如中所述,并经以下确认,我可以直接在
FindOne
查询中使用我的Javascript日期对象
sDate

我使用
typeOf
函数(find)确认
sDate
确实是一个日期对象

因此,在检查了实际代码中的所有其他变量之后,我在别处发现了问题,与日期对象/参数无关。

是MongoDB shell中
Date
对象的包装。Robomongo嵌入了与mongo shell相同的JavaScript引擎,这就是为什么您的查询可以在Robomongo中工作

要查询日期范围,只需在查询中使用
date
对象:

db.collection('events').findOne(
  { eventStartDate: { $lte: sDate}},
  function(err, obj) { 
      console.dir(obj); 
  }
);