我似乎无法在MongoDB中使用最基本的日期查询.使用看起来像这样的文档:
{
"_id" : "foobar/201310",
"ap" : "foobar",
"dt" : ISODate("2013-10-01T00:00:00.000Z"),
"tl" : 375439
}
Run Code Online (Sandbox Code Playgroud)
一个看起来像这样的查询:
{
"dt" : {
"$gte" : {
"$date" : "2013-10-01T00:00:00.000Z"
}
}
}
Run Code Online (Sandbox Code Playgroud)
我从执行中得到0结果:
db.mycollection.find({
"dt" : { "$gte" : { "$date" : "2013-10-01T00:00:00.000Z"}}
})
Run Code Online (Sandbox Code Playgroud)
知道为什么这不起作用吗?
作为参考,此查询由Spring的MongoTemplate生成,因此我无法直接控制最终发送到MongoDB的查询.
(PS)
> db.version()
2.4.7
Run Code Online (Sandbox Code Playgroud)
谢谢!
我将一个值存储为我的集合中的java.util.Date(),但是当我查询获取两个特定日期之间的值时,我最终得到的值超出了该范围.这是我的代码:
插入
BasicDBObject object = new BasicDBObject();
...
object.put("dateAdded", new java.util.Date());
collection.insert(object);
Run Code Online (Sandbox Code Playgroud)
查询
BasicDBObject query = new BasicDBObject();
query.put("dateAdded", new BasicDBObject("$gte", fromDate));
query.put("dateAdded", new BasicDBObject("$lte", toDate));
collection.find(query).sort(new BasicDBObject("dateAdded", -1));
Run Code Online (Sandbox Code Playgroud)
当我在Wed Jul 27 16:54:49 EST 2011和之间查询Wed Jul 27 16:54:49 EST 2011(基本上是fromDate = toDate)时,我得到的日期对应的对象Tue Jul 26 09:43:37 EST 2011绝对不可能.我在这里错过了什么?