sql >> Database >  >> NoSQL >> MongoDB

3 manieren om de week van een date te krijgen in MongoDB

MongoDB biedt verschillende opties om datumdelen uit een datum te extraheren.

Dit artikel presenteert 3 manieren om het weekgedeelte van een datum in MongoDB te retourneren.

Voorbeeldgegevens

Stel dat we een verzameling hebben met de naam cats met de volgende documenten:

{ "_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") }

De volgende voorbeelden demonstreren verschillende opties voor het retourneren van het weekgedeelte van de born veld van die documenten.

De $week Operator

De $week operator retourneert de week van het jaar voor een datum als een getal tussen 0 en 53.

We kunnen daarom de volgende code uitvoeren om de week van de born . te retourneren veld in bovenstaand document.

db.cats.aggregate(
  [
    {
      $project:
        {
          _id: 0,
          birthWeek: { $week: "$born" }
        }
    }
  ]
)

Resultaat:

{ "birthWeek" : 1 }
{ "birthWeek" : 49 }
{ "birthWeek" : 38 }

U kunt ook de tijdzone specificeren bij gebruik van de $week exploitant.

Zie MongoDB $week voor meer informatie en voorbeelden.

De $dateToString Operator

De $dateToString operator converteert een datumobject naar een string volgens een door de gebruiker gespecificeerd formaat. De gebruiker kan daarom specificeren dat alleen het weekgedeelte wordt geretourneerd indien nodig.

Er zijn formaatspecificaties voor elk datumgedeelte. Met betrekking tot het weekgedeelte van de datum, de %U formaatspecificatie retourneert de week van het jaar, en de %V formaatspecificatie retourneert de week van het jaar in ISO 8601-formaat.

Voorbeeld:

db.cats.aggregate(
   [
     {
       $project: {
         _id: 0,
          birthWeek: { $dateToString: { format: "%U", date: "$born" } },
          birthWeekISO: { $dateToString: { format: "%V", date: "$born" } }
       }
     }
   ]
)

Resultaat:

{ "birthWeek" : "01", "birthWeekISO" : "53" }
{ "birthWeek" : "49", "birthWeekISO" : "49" }
{ "birthWeek" : "38", "birthWeekISO" : "39" }

Zie MongoDB $dateToString voor meer informatie en voorbeelden.

Zie ook MongoDB $dateToString Formaatspecificaties voor een lijst met formaatspecificaties die met deze operator kunnen worden gebruikt.

De $isoWeek Operator

Als u de week in ISO 8601-indeling wilt retourneren, gebruikt u $isoWeek . Het ISO 8601-jaar begint met de maandag van week 1 en eindigt met de zondag van de laatste week.

Voorbeeld:

db.cats.aggregate(
  [
    {
      $project:
        {
          _id: 0,
          birthIsoWeek: { $isoWeek: "$born" }
        }
    }
  ]
)

Resultaat:

{ "birthIsoWeek" : 53 }
{ "birthIsoWeek" : 49 }
{ "birthIsoWeek" : 39 }

Dit resultaat is anders dan toen we de $week . gebruikten telefoniste.

Hier is een voorbeeld dat het verschil laat zien.

db.cats.aggregate(
  [
    {
      $project:
        {
          _id: 0,
          birthWeek: { $week: "$born" },
          birthIsoWeek: { $isoWeek: "$born" }
        }
    }
  ]
)

Resultaat:

{ "birthWeek" : 1, "birthIsoWeek" : 53 }
{ "birthWeek" : 49, "birthIsoWeek" : 49 }
{ "birthWeek" : 38, "birthIsoWeek" : 39 }

  1. Maak verbinding met AWS ElastiCache met In-Transit Encryption

  2. MongoDB werkt velden in geneste array bij

  3. Bulk upsert in MongoDB met behulp van mangoest

  4. MongoDB migreren naar DynamoDB, deel 2