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

3 måder at konvertere en streng til en dato i MongoDB

Hvis du har en MongoDB-samling med datoer gemt som strenge, kan du konvertere dem til Dato BSON-typen, hvis det kræves.

Nedenfor er tre måder at konvertere en streng til en dato i MongoDB.

Eksempel på data

Eksemplerne i denne artikel bruger følgende dokument i en samling kaldet dogs :

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

Vi kan se, at born feltet indeholder en dato, men denne dato er gemt som en streng.

Vi kan bruge følgende aggregeringspipeline-operatorer til at konvertere den streng til en dato.

$dateFromString Operatør

$dateFromString aggregeringspipeline-operatør blev designet specifikt til at konvertere en dato til en streng.

Det kræver en dateString argument, som er den streng, du ønsker skal konverteres til en dato.

Her er et eksempel på at konvertere strengen i ovenstående samling til en dato:

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

Resultat:

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

Vi kan se, at datoen nu er pakket ind i ISODate-hjælperen, hvilket betyder, at det er et Date-objekt.

$dateFromString operatør accepterer en håndfuld andre argumenter, som alle er valgfrie. Se MongoDB $dateFromString for mere information og eksempler.

$toDate Operatør

$toDate aggregeringspipeline-operatør konverterer en værdi til en dato. Værdien kan være en hvilken som helst type, der kan konverteres til en dato, som grundlæggende er tal, strenge og objekt-id'er.

Denne artikel handler om konvertering af strenge til datoer, og så her er et eksempel på brug af $toDate at gøre netop det:

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

Resultat:

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

Se Mongo $toDate for mere information og eksempler.

$convert Operatør

$convert operatør blev specielt designet til at konvertere mellem en type og en anden.

input parameter angiver det felt, du vil konvertere, og to parameter angiver den type, du vil konvertere den til.

Eksempel:

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

Resultat:

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

Du har måske bemærket, at $convert operatør accepterer også onError og onNull parametre, som giver os mulighed for at give en besked til brug i tilfælde af en fejl eller en null værdi. Dette forhindrer hele aggregeringsoperationen i at stoppe, og det giver mulighed for en brugervenlig fejlmeddelelse i outputdokumentet.

Se MongoDB $convert for mere information og eksempler.


  1. Vælg dokumenter, hvor alle værdier i et matrixfelt findes i et andet matrix

  2. MongoDB $setIntersection

  3. Forskellen mellem StackExchange.Redis og ServiceStack.Redis

  4. Introduktion til Morphia – Java ODM til MongoDB