Comparación de fechas en MongoDB
- Usar rango de fechas en MongoDB
-
Usar
$gten MongoDB -
Usar
$gteen MongoDB -
Usar
$lten MongoDB -
Usar
$lteen MongoDB - Encuentra documentos entre dos fechas en MongoDB
- Buscar documentos después de una fecha específica en MongoDB
- Buscar documentos antes de una fecha específica en MongoDB
- Comparación basada en fecha 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:

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:

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:

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:

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:

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:

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:

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:

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:
-function-to-return-all-documents-in-a-collection.webp)
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:

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.