我有一个要执行的mongo查询:
query = { "dateField" : { "$gte" : ISODate('2011-11-10T07:45:32.962Z') } }
当我在mongo shell上执行db.Collection.find(query)
时,我可以检索结果。
我如何使用Java查询?我尝试根据Date参数构造一个String。
但是在构建String的过程中,它最终会以"ISODate('2011-11-10T07:45:32.962Z')"
而不是ISODate('2011-11-10T07:45:32.962Z')
传递(没有周围的引号)。
使用Java API构建此查询的最佳方法是什么?
谢谢!
答案 0 :(得分:21)
使用常规Java日期 - 我也建议使用QueryBuilder:
Date d = new Date(); // or make a date out of a string...
DBObject query = QueryBuilder.start().put("dateField").greaterThanEquals(d).get();
答案 1 :(得分:6)
我有搜索批次,花了一个多小时来查找在mongo模型中使用ISODate
时如何获取数据。
由于不推荐使用date的默认构造函数,所以它在我的情况下不起作用。
BasicDBObject searchQuery = new BasicDBObject("_id" , 1);
try {
searchQuery.append("timestamp",BasicDBObjectBuilder.start( "$gte",new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS\'Z\'").parse("2015-12-07T10:38:17.498Z")).get());
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}