Java/MongoDB 按日期查询 [英] Java/MongoDB query by date
问题描述
我将一个值作为 java.util.Date() 存储在我的集合中,但是当我查询以获取两个特定日期之间的值时,我最终得到了该范围之外的值.这是我的代码:
I stored a value as a java.util.Date() in my collection, but when I query to get values between two specific dates, I end up getting values outside of the range. Here's my code:
插入
BasicDBObject object = new BasicDBObject();
...
object.put("dateAdded", new java.util.Date());
collection.insert(object);
查询
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));
当我在 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
的对象,这绝对是不可能的.我在这里错过了什么?
when I query between Wed Jul 27 16:54:49 EST 2011
and Wed Jul 27 16:54:49 EST 2011
(basically fromDate = toDate), I get objects with dates like Tue Jul 26 09:43:37 EST 2011
which should definitely not be possible. What am I missing here?
推荐答案
你所做的只是使用 {$lte: toDate}
进行查询而丢失 $gte
运算符在密钥覆盖中.你想要的是:
What you're doing is querying only with {$lte: toDate}
losing $gte
operator in the key overwrite. What you want is:
query.put("dateAdded", BasicDBObjectBuilder.start("$gte", fromDate).add("$lte", toDate).get());
这篇关于Java/MongoDB 按日期查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!