12

我有一个要执行的 mongo 查询:

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

当我db.Collection.find(query)在 mongo shell 上执行时,我能够检索结果。

我如何使用 Java 查询这个?我尝试根据 Date 参数构造一个字符串。但是在构建字符串的过程中,它最终被传递为"ISODate('2011-11-10T07:45:32.962Z')"而不是ISODate('2011-11-10T07:45:32.962Z')(没有周围的引号)。

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

谢谢 !

4

2 回答 2

21

使用常规的 Java 日期——我也推荐使用 QueryBuilder:

Date d = new Date(); // or make a date out of a string...
DBObject query = QueryBuilder.start().put("dateField").greaterThanEquals(d).get();
于 2012-02-01T05:32:15.623 回答
7

我有很多搜索,并花了一个多小时来寻找如何ISODate在 mongo 模型中获取数据。

由于 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();
    }
于 2015-12-08T15:52:54.113 回答