sql >> Databasteknik >  >> NoSQL >> MongoDB

3 sätt att konvertera ett datum till en sträng i MongoDB

MongoDB har en Date BSON-typ som låter dig lagra datum som datum.

Du kan också lagra datum som strängar, om det är vad du behöver.

Om du tar det ett steg längre kan du också konvertera ett datum till en sträng.

Den här artikeln presenterar tre sätt att konvertera ett datum till en sträng i MongoDB.

Exempeldata

Exemplen i den här artikeln använder följande dokument i en samling som heter cats :

{
	"_id" : 1,
	"name" : "Scratch",
	"born" : ISODate("2021-01-03T23:30:15.123Z")
}

Lägg märke till att born fältet är ett datum. I följande exempel används olika pipelineoperatorer för aggregering för att konvertera detta fält till en sträng.

$dateToString Operatör

$dateToString aggregeringspipeline-operatören är det mest självklara stället att börja.

Som namnet antyder är dess enda syfte att konvertera ett datum till en sträng (och returnera resultatet).

Exempel:

db.cats.aggregate(
   [
     {
       $project: {
         _id: 0,
          dateString: { $dateToString: { format: "%Y-%m-%dT%H:%M:%S.%LZ", date: "$born" } }
       }
     }
   ]
)

Resultat:

{ "dateString" : "2021-01-03T23:30:15.123Z" }

Här tillhandahöll jag en formatsträng för att ange formatet för den resulterande strängen. I det här fallet använde jag %Y-%m-%dT%H:%M:%S.%LZ , vilket är standardformatet. Om jag inte hade angett ett format så är detta formatet som det skulle ha använt.

Du kan flytta runt dessa formatspecifikationer för att passa din resulterande sträng.

Vi skulle till exempel kunna göra detta:

db.cats.aggregate(
   [
     {
       $project: {
         _id: 0,
          dateString: { $dateToString: { format: "%d/%m/%Y", date: "$born" } }
       }
     }
   ]
)

Resultat:

{ "dateString" : "03/01/2021" }

Se MongoDB $dateToString för mer information om den här operatören.

$toString Operatör

$toString aggregeringspipeline-operator liknar $dateToString , förutom att det kan konvertera från olika typer – det är inte bara begränsat till att konvertera från ett datum.

Men för våra syften konverterar vi från ett datum.

Exempel:

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

Resultat:

{ "dateString" : "2021-01-03T23:30:15.123Z" }

Den här operatören ger oss inte möjlighet att ange ett format, så formatet returneras som det är.

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

$convert Operatör

$convert operatören är speciellt utformad för att konvertera mellan en typ och en annan.

input parametern anger fältet du vill konvertera och to parameter anger vilken typ du vill konvertera den till.

Exempel:

db.cats.aggregate(
  [
    {
      $project:
        { 
          result: 
          {
            $convert: { 
              input: "$born", 
              to: "string",
              onError: "An error occurred",
              onNull: "Input was null or empty" 
            }
          }
        }
    }
  ]
)

Resultat:

{ "_id" : 1, "result" : "2021-01-03T23:30:15.123Z" }

Lägg märke till att $convert operatören accepterar också onError och onNull parametrar, som tillåter oss att tillhandahålla ett meddelande att använda i händelse av ett fel eller en null värde. Detta förhindrar att hela aggregeringsoperationen stoppas, och det möjliggör ett användarvänligt felmeddelande i utdatadokumentet.

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


  1. MongoDB $concatArrays

  2. Hur skalning verkligen fungerar i Apache HBase

  3. MongoDB på Ubuntu kommer inte att starta som en tjänst, ingenting i loggen

  4. .updateOne på MongoDB fungerar inte i Node.js