O MongoDB oferece várias opções para extrair partes de uma data.
Este artigo apresenta 3 maneiras de retornar a parte da semana de uma data no MongoDB.
Dados de amostra
Suponha que tenhamos uma coleção chamada
cats
com os seguintes 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") }
Os exemplos a seguir demonstram várias opções para retornar a parte da semana do
born
campo desses documentos. A $week
Operador
A
$week
operador retorna a semana do ano para uma data como um número entre 0 e 53. Podemos, portanto, executar o seguinte código para retornar a semana do
born
campo no documento acima. db.cats.aggregate(
[
{
$project:
{
_id: 0,
birthWeek: { $week: "$born" }
}
}
]
)
Resultado:
{ "birthWeek" : 1 } { "birthWeek" : 49 } { "birthWeek" : 38 }
Você também pode especificar o fuso horário ao usar o
$week
operador. Veja MongoDB
$week
para mais informações e exemplos. A $dateToString
Operador
O
$dateToString
O operador converte um objeto de data em uma string de acordo com um formato especificado pelo usuário. O usuário pode, portanto, especificar que apenas a parte da semana seja retornada, se necessário. Existem especificadores de formato para cada parte da data. Com relação à parte da semana da data, o
%U
especificador de formato retorna a semana do ano e o %V
especificador de formato retorna a semana do ano no formato ISO 8601. Exemplo:
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" }
Veja MongoDB
$dateToString
para mais informações e exemplos. Veja também MongoDB
$dateToString
Especificadores de formato para uma lista de especificadores de formato que podem ser usados com este operador. A $isoWeek
Operador
Se você precisar retornar a semana no formato ISO 8601, use
$isoWeek
. O ano ISO 8601 começa com a segunda-feira da semana 1 e termina com o domingo da última semana. Exemplo:
db.cats.aggregate(
[
{
$project:
{
_id: 0,
birthIsoWeek: { $isoWeek: "$born" }
}
}
]
)
Resultado:
{ "birthIsoWeek" : 53 } { "birthIsoWeek" : 49 } { "birthIsoWeek" : 39 }
Este resultado é diferente de quando usamos o
$week
operador. Aqui está um exemplo que mostra a diferença.
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 }