sql >> Databasteknik >  >> NoSQL >> MongoDB

3 sätt att få veckan från en dejt i MongoDB

MongoDB tillhandahåller olika alternativ för att extrahera datumdelar från ett datum.

Den här artikeln presenterar 3 sätt att returnera veckodelen från ett datum i MongoDB.

Exempeldata

Anta att vi har en samling som heter cats med följande dokument:

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

Följande exempel visar olika alternativ för att returnera veckodelen från born fältet för dessa dokument.

$week Operatör

$week operatorn returnerar veckan på året för ett datum som ett tal mellan 0 och 53.

Vi kan därför köra följande kod för att returnera veckan från born fältet i dokumentet ovan.

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

Resultat:

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

Du kan också ange tidszonen när du använder $week operatör.

Se MongoDB $week för mer information och exempel.

$dateToString Operatör

$dateToString operatorn konverterar ett datumobjekt till en sträng enligt ett användarspecificerat format. Användaren kan därför ange att endast veckodelen returneras om så krävs.

Det finns formatspecifikationer för varje datumdel. När det gäller veckodelen av datumet, %U formatspecificeraren returnerar veckan på året och %V format specifier returnerar veckan på året i ISO 8601-format.

Exempel:

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

Resultat:

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

Se MongoDB $dateToString för mer information och exempel.

Se även MongoDB $dateToString Formatspecifikationer för en lista över formatspecifikationer som kan användas med den här operatorn.

$isoWeek Operatör

Om du behöver returnera veckan i ISO 8601-format, använd $isoWeek . ISO 8601-året börjar med måndagen i vecka 1 och slutar med söndagen i sista veckan.

Exempel:

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

Resultat:

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

Detta resultat skiljer sig från när vi använde $week operatör.

Här är ett exempel som visar skillnaden.

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

Resultat:

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

  1. Hur återanvänder man redis-anslutning i socket.io?

  2. Varför är en enda Jedis-instans inte trådsäker?

  3. Vad är InputSplit i Hadoop MapReduce?

  4. Beständigt Python-objekt i minnet för nginx/uwsgi-server