Mongodb Date()返回错误的值

时间:2015-11-30 04:29:16

标签: mongodb date

来自mongodb shell的

,我遇到了日期查询的问题。这是一个测试数据库,通过示例可以更好地解释问题:

集合中的示例字段

"createdOn" : ISODate("2015-11-23T00:49:01.800Z")

当我输入本月的日期以便在shell上进行测试时,例如:

new Date(2015, 11, 23)
ISODate("2015-12-23T05:00:00Z")

你可以看到一个月的头脑,这意味着它会弄乱我的疑问。为了得到本月我需要的东西,我必须退回一个月:

db.collection.find({'createdOn': {'$lte': new Date(2015, 10, 23)}}).count()
306
db.collection.find({'createdOn': {'$gte': new Date(2015, 10, 23)}}).count()
10

以上所有条目均创建于11月,但使用正确的月份时:

db.collection.find({'createdOn': {'$gte': new Date(2015, 11, 23)}}).count()
0

这怎么会发生?

2 个答案:

答案 0 :(得分:3)

您应该使用Date,如下所示:new Date("2015-11-23")。见Mongo Reference

答案 1 :(得分:1)

你正在做的事情几乎是正确的,但你错过了一个观点:

  

Javascript计算月份从0到11而不是1到12

1月是0. 12月是11.因此,要查看11月创建的条目,您必须应用以下查询:

  

db.collection.find({' createdOn':{' $ gte':new Date(2015,10,23)}})