我有两个变量:
var start = 'Sun, 17 Aug 2014 04:00:00 GMT';
var end = 'Mon, 18 Aug 2014 04:00:00 GMT';
当我尝试在mongodb命令行中运行查询时:
db.model.find({"utctime": {$gte: start, $lt: end}})
它不会返回任何数据。
文件是:
{ "__v" : 0, "_id" : ObjectId("53f1663cb07994e23738d96f"), "utctime" : ISODate("2014-08-18T02:34:21.225Z")}
{ "__v" : 0, "_id" : ObjectId("53f1646ef2ab609325414462"), "utctime" : ISODate("2014-08-17T23:06:21.364Z")}
{ "__v" : 0, "_id" : ObjectId("53f163c6f2ab609325414461"), "utctime" : ISODate("2014-08-17T23:06:21.364Z")}
{ "__v" : 0, "_id" : ObjectId("53f1066a790f5f3d11a42a4b"), "utctime" : ISODate("2014-08-17T19:45:19.669Z")}
{ "__v" : 0, "_id" : ObjectId("53f0d9273af087e674e6f351"), "utctime" : ISODate("2014-08-17T16:31:54.715Z")}
答案 0 :(得分:2)
这些是“日期”对象,而不是字符串。使用JavaScript Date对象构造函数或ISODate帮助程序创建对象以进行比较。或者在实际实现语言中使用相同类型的对象cnstructors:
var start = new Date( "2014-08-17" );
var end = new Date( "2014-08-18" );
或者小时和分钟很重要的地方:
var start = new ISODate("2014-08-17T04:00:00.000Z");
var end = new ISODate("2014-08-18T04:00:00.000Z");
然后您的查询工作正常。