Skynet
Skynet

Reputation: 657

Mongo ISODate query in Java

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 !

Upvotes: 13

Views: 32384

Answers (2)

Root
Root

Reputation: 1005

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();
    }

Upvotes: 7

Eve Freeman
Eve Freeman

Reputation: 33185

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();

Upvotes: 22

Related Questions