这是我第一次使用带有 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 的查询。
关于java - Mongodb + Java 驱动程序。按日期范围搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13752616/