Java / MongoDB查询按日期 [英] Java/MongoDB query by date

查看:679
本文介绍了Java / MongoDB查询按日期的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在我的集​​合中存储了一个java.util.Date()值,但是当我查询获取两个特定日期之间的值时,我会得到超出范围的值。这是我的代码:



插入

  BasicDBObject object = new BasicDBObject (); 
...
object.put(dateAdded,new java.util.Date());
collection.insert(object);

查询

 code> BasicDBObject query = new BasicDBObject(); 
query.put(dateAdded,new BasicDBObject($ gte,fromDate));
query.put(dateAdded,new BasicDBObject($ lte,toDate));
collect.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 2011年7月26日09:43:37 EST 2011 这绝对不可能。我在这里缺少什么?

解决方案

你正在做的是只查询 {$ lte: toDate} 在密钥覆盖中丢失 $ gte 运算符。你想要的是:

  query.put(dateAdded,BasicDBObjectBuilder.start($ gte,fromDate).add ($ lte,toDate).get()); 


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:

to insert

BasicDBObject object = new BasicDBObject();
...
object.put("dateAdded", new java.util.Date());
collection.insert(object);

to query

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));

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?

解决方案

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆