sql >> Database >  >> NoSQL >> MongoDB

3 manieren om een ​​datum naar een string te converteren in MongoDB

MongoDB heeft een Date BSON-type waarmee u datums als datums kunt opslaan.

Je kunt datums ook als strings opslaan, als dat is wat je nodig hebt.

Als u nog een stap verder gaat, kunt u ook een datum naar een tekenreeks converteren.

Dit artikel presenteert drie manieren om een ​​datum te converteren naar een tekenreeks in MongoDB.

Voorbeeldgegevens

De voorbeelden in dit artikel gebruiken het volgende document in een verzameling met de naam cats :

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

Merk op dat de born veld is een Datum. In de volgende voorbeelden worden verschillende aggregatiepijplijnoperators gebruikt om dit veld in een tekenreeks om te zetten.

De $dateToString Operator

De $dateToString aggregatiepijplijnbeheerder is de meest voor de hand liggende plek om te beginnen.

Zoals de naam al aangeeft, is het enige doel om een ​​Datum naar een tekenreeks te converteren (en het resultaat terug te geven).

Voorbeeld:

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

Resultaat:

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

Hier heb ik een format string gegeven om het formaat van de resulterende string te specificeren. In dit geval gebruikte ik %Y-%m-%dT%H:%M:%S.%LZ , wat de standaardindeling is. Als ik geen formaat had gespecificeerd, is dit het formaat dat het zou hebben gebruikt.

U kunt deze formaatspecificaties verplaatsen om ze aan te passen aan uw resulterende tekenreeks.

We zouden dit bijvoorbeeld kunnen doen:

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

Resultaat:

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

Zie MongoDB $dateToString voor meer informatie over deze operator.

De $toString Operator

De $toString aggregatiepijplijnoperator is vergelijkbaar met $dateToString , behalve dat het van verschillende typen kan converteren - het is niet alleen beperkt tot het converteren van een datum.

Maar voor onze doeleinden converteren we van een datum.

Voorbeeld:

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

Resultaat:

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

Deze operator geeft ons niet de mogelijkheid om een ​​formaat op te geven, dus het formaat wordt geretourneerd zoals het is.

Zie MongoDB $toString voor meer informatie en voorbeelden.

De $convert Operator

De $convert operator is speciaal ontworpen voor het converteren van het ene type naar het andere.

De input parameter specificeert het veld dat u wilt converteren, en de to parameter specificeert het type waarnaar u het wilt converteren.

Voorbeeld:

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

Resultaat:

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

Merk op dat de $convert operator accepteert ook onError en onNull parameters, waarmee we een bericht kunnen geven dat kan worden gebruikt in het geval van een fout of een null waarde. Dit voorkomt dat de hele aggregatiebewerking stopt en zorgt voor een gebruiksvriendelijke foutmelding in het uitvoerdocument.

Zie MongoDB $convert voor meer informatie en voorbeelden.


  1. Datum-gegevenstype importeren met mongoimport

  2. Een document opvragen en al zijn subdocumenten die overeenkomen met een voorwaarde in mongodb (met spring)

  3. Verschillen tussen Microsoft.Extensions.Cashing.Redis en Microsoft.Extensions.Caching.StackExchangeRedis.RedisCache

  4. Spring Data MongoDB Lookup met Pipeline Aggregation