Estoy usando una API (por lo que no tengo control sobre los campos) – uno de los campos es de tipo Date.

Ahora, me parece que la fecha almacenada en el registro similar al siguiente valor:

{
    ...
    "foobarDate": "2013-05-26T05:00:00.000Z",
    ...
}

Ahora quiero recuperar algunos registros basados en esta fecha – por ejemplo, necesito recuperar todos los registros cuyo fooBarDate es anterior a la fecha de hoy.

Si puedo usar Javascript Date() funcionalidad, luego me sale la fecha en el siguiente formato:

Wed Jun 19 2013 21:13:50 GMT+0530 (IST)

Si trato de diseño de mi consulta como sigue…

{
    "fooBarDate": {
        "$lte": <the date calculated in javascript>
    }
}

…Yo no obtener los registros de los obtengo un array vacío – sospecho que es por la razón de que el formato de la Fecha almacenada en MongoDB es diferente de la que estoy pasando.

Cómo convertir el Javascript formato de fecha para la mongodb formato? O al menos, ¿cómo puedo obtener la fecha actual en el formato almacenado en MongoDB?

P. S. estoy utilizando nodeJs y el deseo de una consulta a la DB en este caso.

2 Comentarios

  1. 5

    Mongo almacena las fechas como ISODate objetos. Simplemente envuelva nuestra fecha en ISODate constructor:

    {
        "fooBarDate": {
            "$lte": ISODate("2013-05-26T05:00:00.000Z")
        }
    }
    • Esto es un poco engañoso como ISODate simplemente convierte la cadena a los nativos Date tipo pero MongoDB almacena las fechas como se entero de 64 bits HIJO Fechas.
    • Lo que si quiero comparar fooBarDate con un formato Y-m-d
  2. 1

    El correcto formato de datos si se pasa una cadena en la consulta es ISO8601 que se ve como se han hecho, sin embargo también se puede pasar el objeto date de javascript en la consulta directamente y obtener el mismo resultado. Parece que usted puede ser que falte el buen soportes que podrían estar causando el error en la consulta. Intente volver a formatear el código de esta manera (editar estoy usando la mangosta, pero creo recta mongo es el mismo):

    var currentTime = new Date;
    orm.Records.find({lastUpdate:{$lte:currentTime}})

Dejar respuesta

Please enter your comment!
Please enter your name here