java - Mongodb + Java 驱动程序。按日期范围搜索

标签 java mongodb date

这是我第一次使用带有 java 驱动程序的 Mongodb。我可以使用 javascript 和 Date() 对象通过命令行查询数据库,但是,我在使用驱动程序时遇到了问题。根据我的查询,任何人都可以看到问题所在吗?谢谢

            Date current = new Date();
            DBCollection coll = db.getCollection("messages");

            BasicDBObject query = new BasicDBObject("created_on", new BasicDBObject("$gte", new Date(current.getYear(), current.getMonth(), current.getDate())).
                    append("created_on", new BasicDBObject("$lt", new Date(current.getYear(), current.getMonth() - 1, current.getDate()))));

            System.out.println("Query: " + query);


            DBCursor cursor = coll.find(query);

Query: { "created_on" : { "$gte" : { "$date" : "2012-12-06T05:00:00.000Z"} , "created_on" : { "$lt" : { "$date" : "2012-11-06T05:00:00.000Z"}}}}

附:如果不是很明显,我正在尝试查找上个月内的所有记录。

最佳答案

似乎您构建的查询错误。请尝试以下方法:

BasicDBObject query = new BasicDBObject("created_on", //
                      new BasicDBObject("$gte", new DateTime().toDate()).append("$lt", new DateTime().toDate()));

Datetime 对象是一个在 java 中简化日期操作的库。你可以检查一下。 http://joda-time.sourceforge.net/

morphia 也是一个不错的 java 对象文档映射器 (ODM) 框架,用于通过 java 驱动程序与 mongodb 一起工作。它简化了通过 java 的查询。

https://github.com/jmkgreen/morphia

关于java - Mongodb + Java 驱动程序。按日期范围搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13752616/

相关文章:

java - 将数据从 iOS 发送到 java 套接字服务器

java - 如何让我的 JPanels/JFrames 真正显示出来?

javascript - 使用聚合 $lookup 和 $mergeObjects

Mongodb updateMany 属性为其他属性的精确值

spring - MongoDB 找不到能够从类型 org.bson.types.ObjectId 转换为类型 java.lang.Long 的转换器

date - 如何在 Postman 中将 {{$timestamp}} 格式化为 MM/DD/YYYY?

java - 使用 java Swing 单击“下一步”按钮时图像不会显示在 JLabel 上

Java - 优化包含最简单数学的函数

javascript - 如何用 Jasmine 测试日期(无效日期)

javascript - 在解析查询上设置日期约束时出现问题