MongoDB proporciona varias opciones para extraer partes de fechas de una fecha.
Este artículo presenta 3 formas de devolver la parte de la semana de una fecha en MongoDB.
Datos de muestra
Supongamos que tenemos una colección llamada cats
con los siguientes documentos:
{ "_id" : 1, "name" : "Scratch", "born" : ISODate("2021-01-03T23:30:15.123Z") } { "_id" : 2, "name" : "Meow", "born" : ISODate("2019-12-08T04:00:12Z") } { "_id" : 3, "name" : "Fluffy", "born" : ISODate("2020-09-24T10:30:00Z") }
Los siguientes ejemplos muestran varias opciones para devolver la parte de la semana del born
campo de esos documentos.
La $week
Operador
La $week
operador devuelve la semana del año para una fecha como un número entre 0 y 53.
Por lo tanto, podemos ejecutar el siguiente código para devolver la semana desde el born
campo en el documento anterior.
db.cats.aggregate(
[
{
$project:
{
_id: 0,
birthWeek: { $week: "$born" }
}
}
]
)
Resultado:
{ "birthWeek" : 1 } { "birthWeek" : 49 } { "birthWeek" : 38 }
También puede especificar la zona horaria al usar $week
operador.
Ver MongoDB $week
para más información y ejemplos.
El $dateToString
Operador
El $dateToString
El operador convierte un objeto de fecha en una cadena de acuerdo con un formato especificado por el usuario. Por lo tanto, el usuario puede especificar que solo se devuelva la parte de la semana si es necesario.
Hay especificadores de formato para cada parte de la fecha. Con respecto a la parte de la semana de la fecha, el %U
especificador de formato devuelve la semana del año y el %V
El especificador de formato devuelve la semana del año en formato ISO 8601.
Ejemplo:
db.cats.aggregate(
[
{
$project: {
_id: 0,
birthWeek: { $dateToString: { format: "%U", date: "$born" } },
birthWeekISO: { $dateToString: { format: "%V", date: "$born" } }
}
}
]
)
Resultado:
{ "birthWeek" : "01", "birthWeekISO" : "53" } { "birthWeek" : "49", "birthWeekISO" : "49" } { "birthWeek" : "38", "birthWeekISO" : "39" }
Ver MongoDB $dateToString
para más información y ejemplos.
Ver también MongoDB $dateToString
Especificadores de formato para obtener una lista de especificadores de formato que se pueden usar con este operador.
La $isoWeek
Operador
Si necesita devolver la semana en formato ISO 8601, use $isoWeek
. El año ISO 8601 comienza el lunes de la semana 1 y finaliza el domingo de la última semana.
Ejemplo:
db.cats.aggregate(
[
{
$project:
{
_id: 0,
birthIsoWeek: { $isoWeek: "$born" }
}
}
]
)
Resultado:
{ "birthIsoWeek" : 53 } { "birthIsoWeek" : 49 } { "birthIsoWeek" : 39 }
Este resultado es diferente a cuando usamos $week
operador.
Aquí hay un ejemplo que muestra la diferencia.
db.cats.aggregate(
[
{
$project:
{
_id: 0,
birthWeek: { $week: "$born" },
birthIsoWeek: { $isoWeek: "$born" }
}
}
]
)
Resultado:
{ "birthWeek" : 1, "birthIsoWeek" : 53 } { "birthWeek" : 49, "birthIsoWeek" : 49 } { "birthWeek" : 38, "birthIsoWeek" : 39 }