Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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 !

like image 653
Skynet Avatar asked Feb 01 '12 05:02

Skynet


2 Answers

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();
    }
like image 34
Root Avatar answered Nov 17 '22 07:11

Root


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();
like image 187
Eve Freeman Avatar answered Nov 17 '22 09:11

Eve Freeman