2012-02-01 24 views
10

Tengo una consulta mongo a ser ejecutado:Mongo ISODate consulta en Java

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

Cuando hago un db.Collection.find(query) en la consola mongo, yo soy capaz de recuperar los resultados.

¿Cómo puedo consultar esto usando Java? Intenté construir un String basado en el parámetro Date. Pero en el proceso de construcción de la Cadena, eventualmente pasa como "ISODate('2011-11-10T07:45:32.962Z')" en lugar de ISODate('2011-11-10T07:45:32.962Z') (sin las comillas circundantes).

¿Cuál sería la mejor manera de construir esta consulta utilizando la API de Java?

Gracias!

+2

No utilice cadenas. Las cadenas no son fechas. –

Respuesta

20

utilizar una fecha normal Java - También recomiendo el QueryBuilder:

Date d = new Date(); // or make a date out of a string... 
DBObject query = QueryBuilder.start().put("dateField").greaterThanEquals(d).get(); 
+0

Eso funcionó. Gracias ! – Skynet

+2

Sí, ese es el equivalente Java de ISODate(). Intente ejecutar la consulta, en lugar de mirar a toString(). –

4

tengo mucha búsqueda y pasar más de una hora en encontrar la manera de obtener los datos al tener ISODate en el modelo mongo.

Como el constructor predeterminado para la fecha está en desuso, por lo que no funcionaba en mi caso.

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

¿Es esta una respuesta o un comentario? Si es una respuesta, por favor [edit] para aclarar cómo aborda la pregunta. – Mogsdad

+0

Esta es la respuesta, estoy diciendo que la simple 'Fecha' no funciona ya que está en desuso y esto 'SimpleDateFormat' funcionaba bien en mi caso. – Root