Mongo日期范围查询(GMT)

时间:2014-08-18 05:12:36

标签: javascript mongodb mongodb-query

我有两个变量:

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

1 个答案:

答案 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");

然后您的查询工作正常。