Comparación de fechas en MongoDB
- Usar rango de fechas en MongoDB
-
Usar
$gt
en MongoDB -
Usar
$gte
en MongoDB -
Usar
$lt
en MongoDB -
Usar
$lte
en 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:
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.