Pregunta

Tengo datos algo como esto en MongoDB

{ "_id" : ObjectId("4f0ee7310b09f7a254000001"), "createdAt" : ISODate("2012-01-12T23:58:28Z") }
{ "_id" : ObjectId("4f0ee7350b09f7a254000002"), "createdAt" : ISODate("2012-01-12T23:58:28Z") }
{ "_id" : ObjectId("4f0ee855e63cecb654000001"), "createdAt" : ISODate("2012-01-13T00:03:59Z") }
{ "_id" : ObjectId("4f0ee859e63cecb654000002"), "createdAt" : ISODate("2012-01-13T00:04:08Z") }
{ "_id" : ObjectId("4f0ee97c212d70bc54000001"), "createdAt" : ISODate("2012-01-13T00:08:54Z") }
{ "_id" : ObjectId("4f0ee99f212d70bc54000002"), "createdAt" : ISODate("2012-01-13T00:09:27Z") }

Quiero mostrar solo el registro basado en la fecha. Comprueba mi código que no me devuelve nada

//dateStr = '120112' or '120113'
var year = '20' + dateStr.substring(0,2);
var month =  dateStr.substring(2,4);
var day =  dateStr.substring(4);
dateStr = new Date(year,month,day,0,0,0);

var nextDate = new Date(year,month,day,23,59,59);

GPSData.find({"createdAt" : { $gte : dateStr, $lte:  nextDate }}, function(err, data) {
    if(err)
        console.log(err); 

    res.writeHead(200, {
            "Content-Type": "application/json",
            "Access-Control-Allow-Origin": "*"
    });
    var body = JSON.stringify(data);
    res.end(body);  //no output here just []
});

Pero en Mongo Shell usando este comando estoy obteniendo resultados para la fecha '120112'

db.gpsdatas.find({"createdAt" : {new ISODate("2012-01-12T00:00:00Z"), $lte: new ISODate("2012-01-12T23:59:59Z") }});
¿Fue útil?

Solución

Su problema es su comprensión de la clase de fecha. Supongo que está tratando de crear un objeto de fecha para el 12 de enero, pero la nueva fecha (2012, 1, 12) es en realidad el 11 o 12 de febrero dependiendo de la zona horaria local. Como tal, su código no realiza la consulta que está haciendo en el shell.

Lea los detalles aquí http://www.w3schools.com/jsref/jsref_obj_date.asp

Otros consejos

Respuesta ciega, sin ninguna prueba por mí mismo: ¿Qué sucede si agregue esta línea antes de la línea GPSData.Find (..)?

dateStr = dateStr.toString();
nextDate = nextDate.toString();

Además, pruebe una consola.log para ver cómo se ve la cadena de salida. Puede estar en un formato completo completo de lo que esperas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top