我似乎无法在MongoDB中实现最基本的日期查询。具体而言,有一个类似于以下文档的数据:
{
"_id" : "foobar/201310",
"ap" : "foobar",
"dt" : ISODate("2013-10-01T00:00:00.000Z"),
"tl" : 375439
}
而一个看起来像这样的查询:
{
"dt" : {
"$gte" : {
"$date" : "2013-10-01T00:00:00.000Z"
}
}
}
我执行后得到0个结果:
db.mycollection.find({
"dt" : { "$gte" : { "$date" : "2013-10-01T00:00:00.000Z"}}
})
有任何想法为什么这不起作用吗?
供参考,此查询是由Spring的MongoTemplate生成的,因此我无法直接控制最终发送到MongoDB的查询。
(P.S.)
> db.version()
2.4.7
谢谢!
Query
对象时,返回的内容把我搞糊涂了。查询的序列化形式不一定是一个有效的查询,你不能直接复制/粘贴到Mongo shell中,这本身就令人沮丧。问题出在这里:http://grepcode.com/file/repo1.maven.org/maven2/org.mongodb/mongo-java-driver/2.8.0/com/mongodb/util/JSONSerializers.java#208 - Jason Politesnew Date('2016-03-09')
切换到ISODate('2016-03-09')
。前者会在$gte
查询中返回过去的日期。 - Matt Molnar