Comparación de fechas en MongoDB

Tahseen Tauseef 8 octubre 2023
  1. Usar rango de fechas en MongoDB
  2. Usar $gt en MongoDB
  3. Usar $gte en MongoDB
  4. Usar $lt en MongoDB
  5. Usar $lte en MongoDB
  6. Encuentra documentos entre dos fechas en MongoDB
  7. Buscar documentos después de una fecha específica en MongoDB
  8. Buscar documentos antes de una fecha específica en MongoDB
  9. Comparación basada en fecha en MongoDB
Comparación de fechas en MongoDB

El problema de devolver una consulta basada en la fecha se analiza en este artículo instructivo de MongoDB. Además, se enseña bien cómo consultar usando un rango de fechas en MongoDB.

Usar rango de fechas en MongoDB

Aprenderemos a escribir una consulta de rango de fechas de MongoDB para obtener registros basados en una marca de tiempo o rango de fechas. Por ejemplo, las fechas de MongoDB mayores o menores que la hora o la fecha son un ejemplo de una consulta de fecha.

Para ejecutar una consulta con un rango de fechas en MongoDB, use la siguiente sintaxis básica.

db.collection.find({
    day: {
        $gt: ISODate("2020-01-21"),
        $lt: ISODate("2020-01-24")
    }
})

Esta consulta devuelve todos los registros de la colección cuyo campo "día" es mayor o igual que 2020-01-21 pero menor o igual que 2020-01-24.

Usar $gt en MongoDB

Sintaxis:

{ field: { $gt: value } }

El valor de campo es mayor que (es decir, >) el valor proporcionado; por lo tanto, $gt elige esos documentos. Los operadores de comparación solo ejecutan comparaciones en campos cuando el tipo BSON coincide con el tipo de valor de consulta para la mayoría de los tipos de datos.

El tipo de horquillado en MongoDB permite una comparación limitada entre BSON. Los siguientes ejemplos utilizan la colección inventario.

db.inventory.insertMany( [
   {
      "item": "nuts", "quantity": 31,
      "carrier": { "name": "import", "fee": 3 }
   },
   {
      "item": "screws", "quantity": 50,
      "carrier": { "name": "import", "fee": 4 }
   },
   {
      "item": "washers", "quantity": 11,
      "carrier": { "name": "import", "fee": 1 }
   }
] )

Seleccione todos los documentos de la colección inventario donde cantidad sea mayor que 20.

db.inventory.find( { quantity: { $gt: 20 } } )

Producción:

Usar $gt en MongoDB

El siguiente ejemplo establecerá el campo precio en función de una comparación $gt con un campo en un documento incrustado.

db.inventory.updateOne(
   { "carrier.fee": { $gt: 2 } }, { $set: { "price": 9.99 } }
)

Producción:

Realice la actualización basada en campos de documentos incrustados

Este método updateOne() busca un documento incrustado llamado carrier con un subcampo fee. El primer documento descubre donde fee tiene un valor superior a 2; pone precio: 9,99.

Utilice updateMany() para cambiar el valor del campo price en todos los documentos donde carrier.fee sea mayor que 2.

Usar $gte en MongoDB

Sintaxis:

{ field: { $gte: value } }

$gte elige documentos cuyo valor de campo es mayor o igual que (es decir, >=) un valor proporcionado (por ejemplo, valor). Los siguientes ejemplos usan la colección inventario.

db.inventory.insertMany( [
   {
      "item": "nuts", "quantity": 31,
      "carrier": { "name": "import", "fee": 3 }
   },
   {
      "item": "bolts", "quantity": 51,
      "carrier": { "name": "import", "fee": 4 }
   },
   {
      "item": "washers", "quantity": 11,
      "carrier": { "name": "import", "fee": 1 }
   }
] )

Se deben seleccionar todos los documentos de la colección inventario con una cantidad superior o igual a 20.

db.inventory.find( { quantity: { $gte: 20 } } )

Producción:

Usar $gte en MongoDB

El campo price se establece en el siguiente ejemplo utilizando una comparación $gte con un campo en un documento incrustado.

db.inventory.updateMany(
   { "carrier.fee": { $gte: 2 } }, { $set: { "price": 9.99 } }
)

Producción:

Realizar la actualización basada en campos de documentos incrustados mediante $gte

Usar $lt en MongoDB

Sintaxis:

{ field: { $lt: value } }

$lt elige documentos en los que el valor del field es menor que el valor proporcionado. Los siguientes ejemplos utilizan la colección previa del inventario.

Seleccione todos los documentos de la colección inventario donde cantidad sea inferior a 20.

db.inventory.find( { quantity: { $lt: 20 } } )

Producción:

Usar $lt en MongoDB

El siguiente ejemplo establece el campo precio en función de una comparación $lt con un campo en un documento incrustado.

db.inventory.updateMany( { "carrier.fee": { $lt: 20 } }, { $set: { price: 9.99 } } )

Producción:

Realice la actualización basada en campos de documentos incrustados usando $lt

Usar $lte en MongoDB

Sintaxis:

{ field: { $lte: value } }

$lte elige documentos cuyo valor de campo es menor o igual que (es decir, =) el valor proporcionado. Los siguientes ejemplos utilizan la colección de inventario anterior.

Considere el siguiente ejemplo.

db.inventory.find( { quantity: { $lte: 20 } } )

Esta consulta devuelve todas las entradas en la colección inventario con un valor de campo de cantidad menor o igual a 20..

Producción:

Usar $lte en MongoDB

El campo price se establece en el siguiente ejemplo utilizando una comparación $lte con un campo en un documento incrustado.

db.inventory.updateMany(
   { "carrier.fee": { $lte: 5 } }, { $set: { price: 9.99 } }
)

Producción:

Realice la actualización basada en campos de documentos incrustados usando $lte

La siguiente información demuestra cómo aplicar esta sintaxis a un conjunto de datos usando los siguientes documentos.

db.data.insertOne({day: new Date("2022-01-20"), amount: 40})
db.data.insertOne({day: new Date("2022-01-21"), amount: 32})
db.data.insertOne({day: new Date("2022-01-22"), amount: 19})
db.data.insertOne({day: new Date("2022-01-23"), amount: 29})
db.data.insertOne({day: new Date("2022-01-24"), amount: 35})

Encuentra documentos entre dos fechas en MongoDB

Utilice la siguiente consulta para descubrir todos los documentos con el campo "día" entre dos fechas.

Consulta:

db.data.find({
    day: {
        $gt: ISODate("2020-01-21"),
        $lt: ISODate("2020-01-24")
    }
})

Producción :

{ _id: ObjectId("618548bc7529c93ea0b41490"),
  day: 2020-01-22T00:00:00.000Z,
  amount: 19 }

{ _id: ObjectId("618548bc7529c93ea0b41491"),
  day: 2020-01-23T00:00:00.000Z,
  amount: 29 }

Buscar documentos después de una fecha específica en MongoDB

Para localizar todos los documentos con el campo "día" establecido en una fecha posterior a una determinada fecha, utilice la siguiente consulta.

Consulta:

db.data.find({
    day: {
        $gt: ISODate("2020-01-22")
    }
})

Producción :

{ _id: ObjectId("618548bc7529c93ea0b41491"),
  day: 2020-01-23T00:00:00.000Z,
  amount: 29 }

{ _id: ObjectId("618548bc7529c93ea0b41492"),
  day: 2020-01-24T00:00:00.000Z,
  amount: 35 }

Buscar documentos antes de una fecha específica en MongoDB

Utilice la siguiente consulta para localizar todos los documentos con el campo "día" establecido antes de una fecha específica.

Consulta:

db.data.find({
    day: {
        $lt: ISODate("2020-01-22")
    }
})

Producción :

{ _id: ObjectId("618548bc7529c93ea0b4148e"),
  day: 2020-01-20T00:00:00.000Z,
  amount: 40 }

{ _id: ObjectId("618548bc7529c93ea0b4148f"),
  day: 2020-01-21T00:00:00.000Z,
  amount: 32 }

Comparación basada en fecha en MongoDB

Usemos MongoDB para devolver una consulta basada en la fecha. Primero, cree una colección llamada 'datos' utilizando el documento para comprender mejor el concepto.

Consulta:

db.data.insertOne({"PassengerName":"John","PassengerAge":23,"PassengerArrivalTime":new ISODate("2018-03-10 14:45:56")});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c8a57be9064dcd4a68b70e4")
}
db.data.insertOne({"PassengerName":"Larry","PassengerAge":21,"PassengerArrivalTime":new ISODate("2018-05-19 11:10:23")});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c8a57bf9064dcd4a68b70e5")
}
db.data.insertOne({"PassengerName":"Mike","PassengerAge":24,"PassengerArrivalTime":new ISODate("2018-08-25 16:40:12")});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c8a57bf9064dcd4a68b70e6")
}
db.data.insertOne({"PassengerName":"Carol","PassengerAge":26,"PassengerArrivalTime":new ISODate("2019-01-29 09:45:10")});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c8a57bf9064dcd4a68b70e7")
}

Utilice la función buscar() para mostrar todos los documentos de una colección.

Consulta:

db.data queryFromDate.find().pretty();

Producción:

use la función find () para devolver todos los documentos en una colección

La siguiente es la consulta de devolución basada en la fecha. Se devolverán los registros con una fecha de creación posterior a 2018-05-19T11:10:23Z.

Consulta:

> db.data queryFromDate.find({"PassengerArrivalTime" : { $gte : new ISODate("2018-05-19T11:10:23Z") }}).pretty();

Producción:

usar consultas basadas en fechas para devolver documentos en una colección

Aprendimos sobre el uso del método Date() a través de este artículo. Los ejemplos explicaron brevemente los comandos $gte y $lte y la consulta de retorno basada en datos.

Artículo relacionado - MongoDB Date