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 }