Mongodb + Java驱动程序.按日期范围搜索

tie*_*er1 5 java date mongodb

这是我第一次使用Mongodb和java驱动程序.我可以使用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);
Run Code Online (Sandbox Code Playgroud)

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

PS如果不明显,我试图找到上个月内的所有记录.

cub*_*buk 16

好像你正在构建错误的查询.请尝试下面的一个:

BasicDBObject query = new BasicDBObject("created_on", //
                      new BasicDBObject("$gte", new DateTime().toDate()).append("$lt", new DateTime().toDate()));
Run Code Online (Sandbox Code Playgroud)

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

此外,morphia是一个很好的java对象 - 文档映射器(ODM)框架,用于通过java驱动程序使用mongodb.它简化了通过java查询.

https://github.com/jmkgreen/morphia