MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

3 Möglichkeiten, die Woche aus einem Datum in MongoDB abzurufen

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 }