sql >> Database teknologi >  >> NoSQL >> MongoDB

3 måder at få ugen fra en dato i MongoDB

MongoDB giver forskellige muligheder for at udtrække datodele fra en dato.

Denne artikel præsenterer 3 måder at returnere ugedelen fra en dato i MongoDB.

Eksempel på data

Antag, at vi har en samling kaldet cats med følgende dokumenter:

{ "_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 følgende eksempler viser forskellige muligheder for at returnere ugedelen fra born felt af disse dokumenter.

$week Operatør

$week operatør returnerer ugen i året for en dato som et tal mellem 0 og 53.

Vi kan derfor køre følgende kode for at returnere ugen fra born felt i ovenstående dokument.

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

Resultat:

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

Du kan også angive tidszonen, når du bruger $week operatør.

Se MongoDB $week for mere information og eksempler.

$dateToString Operatør

$dateToString operator konverterer et datoobjekt til en streng i henhold til et brugerspecificeret format. Brugeren kan derfor angive, at kun ugedelen returneres, hvis det kræves.

Der er formatspecifikationer for hver datodel. Med hensyn til ugedelen af ​​datoen, %U formatspecificator returnerer ugen i året og %V formatspecificator returnerer ugen i året i ISO 8601-format.

Eksempel:

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 for mere information og eksempler.

Se også MongoDB $dateToString Formatspecifikationer for en liste over formatspecifikationer, der kan bruges med denne operator.

$isoWeek Operatør

Hvis du skal returnere ugen i ISO 8601-format, skal du bruge $isoWeek . ISO 8601-året starter med mandagen i uge 1 og slutter med søndagen i den sidste uge.

Eksempel:

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

Resultat:

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

Dette resultat er anderledes end da vi brugte $week operatør.

Her er et eksempel, der viser forskellen.

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. nodejs, redis. tjek om der findes nøgler og opret nye hvis ikke

  2. JavaScript NoSQL-injektionsforebyggelse i MongoDB

  3. En oversigt over MongoDB Atlas:Første del

  4. Mongoose returnerer altid et tomt array NodeJS