Consulta de fecha con ISODate en MongoDB

Tahseen Tauseef 15 febrero 2024
  1. el método Date() en MongoDB
  2. Comportamiento del Método Date()
  3. Utilice el método Date() en una consulta en MongoDB
  4. Ordenar por fecha en MongoDB
  5. Ordenar por fecha no funciona en MongoDB
  6. Consulta de fecha de trabajo con ISODate() en MongoDB
Consulta de fecha con ISODate en MongoDB

Esta publicación instructiva de MongoDB explicará el método Date(). En este artículo se describen diferentes enfoques que utilizan consultas de fecha.

el método Date() en MongoDB

El método Date() devuelve la fecha como una cadena o un objeto Date.

  1. En MongoDB shell o mongosh, el método Date() devuelve la fecha actual como una cadena.
  2. La función nueva Fecha() devuelve un objeto Fecha con la fecha actual. El ayudante ISODate está envuelto alrededor del objeto Date por mongosh, y ISODate está en UTC (hora universal).

Puede usar la función nueva Fecha() o el método ISODate() para definir una fecha específica proporcionando una cadena de fecha ISO-8601 con un año entre '0' y '9999'. Estas funciones aceptan los siguientes formatos.

  1. El ISODate con la fecha suministrada es devuelto por la nueva Fecha("").
  2. La nueva Fecha("") especifica una DateTime en la zona horaria local del cliente y devuelve una ISODate con esa DateTime en UTC.
  3. La nueva Fecha("") toma una DateTime en UTC y devuelve una ISODate con esa DateTime en UTC.
  4. new Date(integer>) devuelve una instancia de ISODate con DateTime especificado en milisegundos desde la época de UNIX (1 de enero de 1970).

Comportamiento del Método Date()

Los objetos Date se mantienen internamente como un entero de 64 bits con signo que representa los milisegundos desde la época de Unix (1 de enero de 1970). Todos los procedimientos y controladores de la base de datos no admiten el rango completo de 64 bits.

Las fechas con años en el rango inclusivo de 0 a 9999 son seguras de manejar.

Utilice el método Date() en una consulta en MongoDB

El siguiente código agrega un documento con el campo dateAdded establecido en la fecha actual si no existe ningún documento con el _id igual a 1 en la colección de productos.

Código:

db.products.updateOne(
   { _id: 1 },
   {
     $set: { item: "apple" },
     $setOnInsert: { dateAdded: new Date() }
   },
   { upsert: true }
)

Usa el método Date() para devolver la fecha como una cadena, como se ve en el siguiente ejemplo:

var myDateString = Date();

mongosh envuelve objetos de tipo Fecha con el ayudante ISODate. Sin embargo, los objetos siguen siendo del tipo Fecha.

El siguiente ejemplo utiliza new Date() para devolver el objeto Date con la UTC DateTime. especificada.

var myDate = new Date("2016-05-18T16:00:00Z");

Ordenar por fecha en MongoDB

El problema se resuelve usando la función sort() y el agregado $sort en MongoDB. Puede ordenar los datos en orden ascendente o descendente con esta herramienta.

Ejemplo de código:

db.posts.find().pretty()
{
    "_id" : 1,
    "title" : "MongoDB",
    "body" : "Hi there",
    "date" : "2021-01-01T00:00:00.000Z",
        "Country" : "United Kingdom"
}
{
    "_id" : 2,
    "title" : "MySQL",
    "body" : "Hello",
    "date" : ISODate("2020-01-01T00:00:00Z"),
        "Country" : "United States of America"
}
{
    "_id" : 3,
    "title" : "SQL",
    "body" : "World",
    "date" : ISODate("2021-01-01T00:00:00Z"),
        "Country" : "New Zealand"
}

Algunos datos se agregan a la colección de publicaciones y el campo de fecha se usa para organizarlos en orden ascendente, con las fechas anteriores apareciendo primero.

Ejemplo de código:

db.posts.find().sort({ date: 1 }).pretty()
{
    "_id" : 1,
    "title" : "MongoDB",
    "body" : "Hi there",
    "date" : "2021-01-01T00:00:00.000Z",
        "Country" : "United Kingdom"
}
{
    "_id" : 2,
    "title" : "MySQL",
    "body" : "Hello",
    "date" : ISODate("2020-01-01T00:00:00Z"),
        "Country" : "United States of America"
}
{
    "_id" : 3,
    "title" : "SQL",
    "body" : "World",
    "date" : ISODate("2021-01-01T00:00:00Z"),
        "Country" : "New Zealand"
}

Después de ordenarlo, anótelo porque el primer documento tiene una cadena de fecha en lugar de un objeto de fecha.

La cadena de fecha aparece primero, incluso si la fecha en el documento 2 se inicializa más tarde.

Ordenar por fecha no funciona en MongoDB

Puede haber varias razones por las que MongoDB no funciona, pero debe recordar algunos procedimientos para operar con ordenar por fecha en MongoDB.

  1. Recuerda siempre que con ayuda, estás almacenando los datos en una colección.
  2. Hay dos formas de almacenar el campo de fecha dentro del documento.
  3. La cadena Date() y el tipo de datos ISODate() se utilizan para almacenar la fecha en los documentos.
  4. Cuando ordene el campo de fecha usando el método sort(), verifique qué tipo de datos usó.

Ejemplo de código:

db.document.insertOne({ "productId" : 1001, "productDeliveryDateTime": new Date() });
{
        "acknowledged" : true,
        "insertedId" : ObjectId("611c9e39e1fdc428cf238802")
}

La fecha se agrega usando la cadena Date() y el nombre de la colección es el documento. Puede insertar una fecha en el documento usando ISODate() de la misma manera.

Consulta de fecha de trabajo con ISODate() en MongoDB

Utilice el operador $gte y ISODate() para trabajar la consulta de fecha con ISODate en MongoDB. Hagamos una colección usando el documento para comprender mejor la noción.

La siguiente es la consulta para construir una colección con un documento.

Consulta:

> db.dateDemo.insertOne({"StudentName":"John","StudentAge":26,"AdmissionDate":new ISODate("2013-06-07")});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c8a65799064dcd4a68b70ea")
}

La función buscar() puede mostrar todos los documentos de una colección.

Consulta:

db.dateDemo.find().pretty();

Producción:

use la función find () para mostrar documentos en una colección

Aquí está la consulta de fecha usando ISODate() en MongoDB.

Consulta:

> db.dateDemo.find({"AdmissionDate":{"$gte": ISODate("2013-06-07T00:00:00Z")}}).pretty();

Producción:

Consulta de fecha con ISODate() en MongoDB

Artículo relacionado - MongoDB Query