13

I have a mongo query to be executed :

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

When I do a db.Collection.find(query) on the mongo shell, I am able to retrieve the results.

How could I query this using Java ? I tried constructing a String based on the Date parameter. But in the process of building the String, it eventually gets passed as "ISODate('2011-11-10T07:45:32.962Z')" instead of ISODate('2011-11-10T07:45:32.962Z') (without the surrounding quotes).

What would be the best way to construct this query using the Java API ?

Thanks !

Dennis Meng
  • 5,109
  • 14
  • 33
  • 36
Skynet
  • 657
  • 2
  • 9
  • 25

2 Answers2

22

Use a regular Java Date--also I recommend the QueryBuilder:

Date d = new Date(); // or make a date out of a string...
DBObject query = QueryBuilder.start().put("dateField").greaterThanEquals(d).get();
Eve Freeman
  • 32,467
  • 4
  • 86
  • 101
7

I have search lot and spend more than hour in finding how to get data when having ISODate in mongo model.

As the default constructor for date is deprecated so it was not working in my case.

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();
    }
Root
  • 955
  • 1
  • 16
  • 39
  • Is this an answer or a comment? If it's an answer, please [edit] it to clarify how it addresses the question. – Mogsdad Dec 08 '15 at 17:01
  • This is answer, I am telling that the simple `Date` not works as it is deprecated and this thing `SimpleDateFormat` was working fine in my case. – Root Jun 14 '16 at 06:56