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

插入

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 2011Wed Jul 27 16:54:49 EST 2011之间查询时(基本上是fromDate=toDate),我会得到日期为Tue Jul 26 09:43:37 EST 2011的对象,这肯定是不可能的.我错过了什么?

推荐答案

你要做的是只在键覆盖中丢失{$lte: toDate}$gte运算符的情况下进行查询.你想要的是:

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

Mongodb相关问答推荐

Mongodb如果数组中有外部键,则将排序应用到查找结果

MongoDB聚合匹配字符串字符

MongoDB通过查找具有多个数组的对象进行聚合

带dropTarget的MongoDB renameCollection命令是原子的吗

无法通过管理邮箱/密码身份验证注册/登录新用户帐户(类型错误:加载失败)

如何判断 mongodb 聚合,该文档具有键,该键是一个数组,其第二个元素是否存在?

错误起草的 MongoDB 聚合管道 $match 阶段

我可以在 MongoDB 中将字段值设置为对象键吗?

在MongoDb的数组中计算大于某个数字的数字

Ruby on Rails 的 Cassandra、mongodb 或 couchdb

使用绝对类型在 Typescript 中编写 Mongoose 的类型化模型和模式的类和接口

为什么mongodb的文档中存储键名

在mongo聚合中将ObjectID转换为字符串

你如何让 mongo 在远程服务器上运行?

如何在 MongoDB 中进行内部连接?

用 BsonRepresentation(BsonType.ObjectId) vs BsonId vs ObjectId 在 C# 中装饰属性之间的区别

MongoDB:多个 $elemMatch

将 MongoDB 数据库复制到本地计算机

Flask:设置应用程序和请求特定的属性?

MongoDB MapReduce - 发出一个键/一个值不调用reduce