MongoDB bietet verschiedene Optionen zum Extrahieren von Datumsteilen aus einem Datum.
Dieser Artikel stellt 3 Möglichkeiten vor, den Wochenteil von einem Datum in MongoDB zurückzugeben.
Beispieldaten
Angenommen, wir haben eine Sammlung namens cats
mit folgenden Dokumenten:
{ "_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") }
Die folgenden Beispiele demonstrieren verschiedene Optionen zum Zurückgeben des Wochenanteils von born
Bereich dieser Dokumente.
Die $week
Betreiber
Die $week
Der Operator gibt die Woche des Jahres für ein Datum als Zahl zwischen 0 und 53 zurück.
Wir können daher den folgenden Code ausführen, um die Woche von born
zurückzugeben Feld im obigen Dokument.
db.cats.aggregate(
[
{
$project:
{
_id: 0,
birthWeek: { $week: "$born" }
}
}
]
)
Ergebnis:
{ "birthWeek" : 1 } { "birthWeek" : 49 } { "birthWeek" : 38 }
Sie können auch die Zeitzone angeben, wenn Sie $week
verwenden Operator.
Siehe MongoDB $week
für weitere Informationen und Beispiele.
Der $dateToString
Betreiber
Der $dateToString
-Operator konvertiert ein Datumsobjekt gemäß einem benutzerdefinierten Format in eine Zeichenfolge. Der Benutzer kann daher festlegen, dass bei Bedarf nur der Wochenanteil zurückgegeben wird.
Es gibt Formatbezeichner für jeden Datumsteil. In Bezug auf den Wochenteil des Datums, %U
format specifier gibt die Woche des Jahres und den %V
zurück Formatbezeichner gibt die Woche des Jahres im ISO 8601-Format zurück.
Beispiel:
db.cats.aggregate(
[
{
$project: {
_id: 0,
birthWeek: { $dateToString: { format: "%U", date: "$born" } },
birthWeekISO: { $dateToString: { format: "%V", date: "$born" } }
}
}
]
)
Ergebnis:
{ "birthWeek" : "01", "birthWeekISO" : "53" } { "birthWeek" : "49", "birthWeekISO" : "49" } { "birthWeek" : "38", "birthWeekISO" : "39" }
Siehe MongoDB $dateToString
für weitere Informationen und Beispiele.
Siehe auch MongoDB $dateToString
Formatbezeichner für eine Liste von Formatbezeichnern, die mit diesem Operator verwendet werden können.
Die $isoWeek
Betreiber
Wenn Sie die Woche im ISO 8601-Format zurückgeben müssen, verwenden Sie $isoWeek
. Das ISO 8601-Jahr beginnt mit dem Montag der 1. Woche und endet mit dem Sonntag der letzten Woche.
Beispiel:
db.cats.aggregate(
[
{
$project:
{
_id: 0,
birthIsoWeek: { $isoWeek: "$born" }
}
}
]
)
Ergebnis:
{ "birthIsoWeek" : 53 } { "birthIsoWeek" : 49 } { "birthIsoWeek" : 39 }
Dieses Ergebnis ist anders als bei der Verwendung von $week
Betreiber.
Hier ist ein Beispiel, das den Unterschied zeigt.
db.cats.aggregate(
[
{
$project:
{
_id: 0,
birthWeek: { $week: "$born" },
birthIsoWeek: { $isoWeek: "$born" }
}
}
]
)
Ergebnis:
{ "birthWeek" : 1, "birthIsoWeek" : 53 } { "birthWeek" : 49, "birthIsoWeek" : 49 } { "birthWeek" : 38, "birthIsoWeek" : 39 }