MongoDB fournit diverses options pour extraire des parties de date à partir d'une date.
Cet article présente 3 façons de renvoyer la partie semaine d'une date dans MongoDB.
Exemple de données
Supposons que nous ayons une collection appelée cats
avec les documents suivants :
{ "_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") }
Les exemples suivants illustrent diverses options pour renvoyer la partie semaine à partir de born
champ de ces documents.
La $week
Opérateur
La $week
l'opérateur renvoie la semaine de l'année pour une date sous la forme d'un nombre compris entre 0 et 53.
On peut donc lancer le code suivant pour retourner la semaine à partir du born
champ dans le document ci-dessus.
db.cats.aggregate(
[
{
$project:
{
_id: 0,
birthWeek: { $week: "$born" }
}
}
]
)
Résultat :
{ "birthWeek" : 1 } { "birthWeek" : 49 } { "birthWeek" : 38 }
Vous pouvez également spécifier le fuseau horaire lorsque vous utilisez le $week
opérateur.
Voir MongoDB $week
pour plus d'informations et d'exemples.
Le $dateToString
Opérateur
Le $dateToString
L'opérateur convertit un objet date en une chaîne selon un format spécifié par l'utilisateur. L'utilisateur peut donc spécifier que seule la partie semaine est renvoyée si nécessaire.
Il existe des spécificateurs de format pour chaque partie de date. En ce qui concerne la partie semaine de la date, le %U
le spécificateur de format renvoie la semaine de l'année et le %V
le spécificateur de format renvoie la semaine de l'année au format ISO 8601.
Exemple :
db.cats.aggregate(
[
{
$project: {
_id: 0,
birthWeek: { $dateToString: { format: "%U", date: "$born" } },
birthWeekISO: { $dateToString: { format: "%V", date: "$born" } }
}
}
]
)
Résultat :
{ "birthWeek" : "01", "birthWeekISO" : "53" } { "birthWeek" : "49", "birthWeekISO" : "49" } { "birthWeek" : "38", "birthWeekISO" : "39" }
Voir MongoDB $dateToString
pour plus d'informations et d'exemples.
Voir aussi MongoDB $dateToString
Spécificateurs de format pour une liste de spécificateurs de format pouvant être utilisés avec cet opérateur.
La $isoWeek
Opérateur
Si vous devez renvoyer la semaine au format ISO 8601, utilisez $isoWeek
. L'année ISO 8601 commence par le lundi de la semaine 1 et se termine par le dimanche de la dernière semaine.
Exemple :
db.cats.aggregate(
[
{
$project:
{
_id: 0,
birthIsoWeek: { $isoWeek: "$born" }
}
}
]
)
Résultat :
{ "birthIsoWeek" : 53 } { "birthIsoWeek" : 49 } { "birthIsoWeek" : 39 }
Ce résultat est différent lorsque nous avons utilisé le $week
opérateur.
Voici un exemple qui montre la différence.
db.cats.aggregate(
[
{
$project:
{
_id: 0,
birthWeek: { $week: "$born" },
birthIsoWeek: { $isoWeek: "$born" }
}
}
]
)
Résultat :
{ "birthWeek" : 1, "birthIsoWeek" : 53 } { "birthWeek" : 49, "birthIsoWeek" : 49 } { "birthWeek" : 38, "birthIsoWeek" : 39 }