sql >> Database >  >> NoSQL >> MongoDB

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

Als u een MongoDB-verzameling heeft met datums die zijn opgeslagen als strings, kunt u deze indien nodig converteren naar het type Date BSON.

Hieronder staan ​​drie manieren om een ​​string om te zetten in een datum in MongoDB.

Voorbeeldgegevens

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

{ "_id" : 1, "name" : "Fetch", "born" : "2021-01-03T23:30:15.123" }

We kunnen zien dat de born veld een datum bevat, maar die datum wordt opgeslagen als een string.

We kunnen de volgende aggregatiepijplijnoperators gebruiken om die string om te zetten in een datum.

De $dateFromString Operator

De $dateFromString aggregatiepijplijnoperator is speciaal ontworpen voor het converteren van een datum naar een tekenreeks.

Het vereist een dateString argument, wat de tekenreeks is die u naar een datum wilt converteren.

Hier is een voorbeeld van het converteren van de tekenreeks in de bovenstaande verzameling naar een datum:

db.dogs.aggregate([ 
  {
    $project: {
        born: {
          $dateFromString: {
              dateString: '$born'
          }
        }
    }
  } 
])

Resultaat:

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

We kunnen zien dat de datum nu is ingepakt in de ISODate-helper, wat betekent dat het een Date-object is.

De $dateFromString operator accepteert een handvol andere argumenten, die allemaal optioneel zijn. Zie MongoDB $dateFromString voor meer informatie en voorbeelden.

De $toDate Operator

De $toDate aggregatiepijplijnoperator converteert een waarde naar een datum. De waarde kan van elk type zijn dat kan worden geconverteerd naar een datum, in feite getallen, tekenreeksen en object-ID's.

Dit artikel gaat over het converteren van tekenreeksen naar datums, dus hier is een voorbeeld van het gebruik van $toDate om precies dat te doen:

db.dogs.aggregate([ 
  {
    $project: {
        "born": { 
          $toDate: "$born" 
        }
    }
  } 
])

Resultaat:

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

Zie Mongo $toDate 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: "date",
              onError: "An error occurred",
              onNull: "Input was null or empty" 
            }
          }
        }
    }
  ]
)

Resultaat:

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

Het is je misschien opgevallen 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. Snijpunt van twee of meer gesorteerde sets

  2. wat zijn pagecache, dentries, inodes?

  3. MongoDB:alleen documenten ophalen die in de afgelopen 24 uur zijn gemaakt?

  4. MongoDB samengestelde sleutel