Consulta de fecha con ISODate en MongoDB
-
el método
Date()
en MongoDB -
Comportamiento del Método
Date()
-
Utilice el método
Date()
en una consulta en MongoDB - Ordenar por fecha en MongoDB
- Ordenar por fecha no funciona en MongoDB
-
Consulta de fecha de trabajo 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
.
- En MongoDB shell o mongosh, el método
Date()
devuelve la fecha actual como una cadena. - La función
nueva Fecha()
devuelve un objetoFecha
con la fecha actual. El ayudante ISODate está envuelto alrededor del objetoDate
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.
- El
ISODate
con la fecha suministrada es devuelto por lanueva Fecha("")
. - La
nueva Fecha("")
especifica unaDateTime
en la zona horaria local del cliente y devuelve una ISODate con esaDateTime
en UTC. - La
nueva Fecha("")
toma unaDateTime
en UTC y devuelve una ISODate con esaDateTime
en UTC. new Date(integer>)
devuelve una instancia de ISODate conDateTime
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.
- Recuerda siempre que con ayuda, estás almacenando los datos en una colección.
- Hay dos formas de almacenar el campo de fecha dentro del documento.
- La cadena
Date()
y el tipo de datosISODate()
se utilizan para almacenar la fecha en los documentos. - 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:
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: