sql >> Databáze >  >> NoSQL >> MongoDB

3 způsoby, jak získat týden z rande v MongoDB

MongoDB poskytuje různé možnosti pro extrahování částí data z data.

Tento článek představuje 3 způsoby, jak vrátit část týdne z data v MongoDB.

Ukázková data

Předpokládejme, že máme sbírku nazvanou cats s následujícími dokumenty:

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

Následující příklady ukazují různé možnosti pro vrácení části týdne z born pole těchto dokumentů.

$week Operátor

$week operátor vrátí týden v roce pro datum jako číslo mezi 0 a 53.

Můžeme tedy spustit následující kód, abychom vrátili týden od born pole ve výše uvedeném dokumentu.

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

Výsledek:

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

Při použití $week můžete také určit časové pásmo operátor.

Viz MongoDB $week pro další informace a příklady.

$dateToString Operátor

$dateToString operátor převede objekt data na řetězec podle uživatelem zadaného formátu. Uživatel tedy může určit, že v případě potřeby se vrátí pouze týdenní část.

Pro každou část data existují specifikátory formátu. Pokud jde o týdenní část data, %U specifikátor formátu vrací týden v roce a %V format specifier vrací týden v roce ve formátu ISO 8601.

Příklad:

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

Výsledek:

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

Viz MongoDB $dateToString pro další informace a příklady.

Viz také MongoDB $dateToString Specifikátory formátu pro seznam specifikátorů formátu, které lze použít s tímto operátorem.

$isoWeek Operátor

Pokud potřebujete vrátit týden ve formátu ISO 8601, použijte $isoWeek . Rok ISO 8601 začíná pondělím týdne 1 a končí nedělí posledního týdne.

Příklad:

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

Výsledek:

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

Tento výsledek je jiný, než když jsme použili $week operátor.

Zde je příklad, který ukazuje rozdíl.

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

Výsledek:

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

  1. C# mongodb - jak aktualizovat prvky vnořeného pole

  2. Nelze se připojit k serveru Redis pomocí poskytovatele stavu relace ASP.NET

  3. jackson deserializovat objekt se seznamem rozhraní pružiny

  4. Nainstalujte MongoDB na Mac