Java中的Mongo ISODate查询

Sky*_*net 11 java mongodb mongo-java

我有一个mongo查询要执行:

query = { "dateField" : { "$gte" : ISODate('2011-11-10T07:45:32.962Z')  } }
Run Code Online (Sandbox Code Playgroud)

当我db.Collection.find(query)在mongo shell上执行操作时,我可以检索结果.

我怎么能用Java查询呢?我尝试根据Date参数构造一个String.但是在构建String的过程中,它最终会被传递"ISODate('2011-11-10T07:45:32.962Z')"而不是ISODate('2011-11-10T07:45:32.962Z')(没有周围的引号).

使用Java API构建此查询的最佳方法是什么?

谢谢 !

Eve*_*man 21

使用常规Java日期 - 我也建议使用QueryBuilder:

Date d = new Date(); // or make a date out of a string...
DBObject query = QueryBuilder.start().put("dateField").greaterThanEquals(d).get();
Run Code Online (Sandbox Code Playgroud)

  • 是的,这是ISODate()的Java等价物.尝试运行查询,而不是查看toString(). (2认同)

Roo*_*oot 6

在搜索ISODatemongo模型的时候,我有搜索批次并花费了超过一小时的时间来查找如何获取数据.

由于不推荐使用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();
    }
Run Code Online (Sandbox Code Playgroud)