sql >> Databasteknik >  >> NoSQL >> MongoDB

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

Om du har en MongoDB-samling med datum lagrade som strängar kan du konvertera dessa till Datum BSON-typen om det behövs.

Nedan finns tre sätt att konvertera en sträng till ett datum i MongoDB.

Exempeldata

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

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

Vi kan se att born fältet innehåller ett datum, men det datumet lagras som en sträng.

Vi kan använda följande aggregeringspipeline-operatorer för att konvertera den strängen till ett datum.

$dateFromString Operatör

$dateFromString aggregeringspipeline-operatören designades specifikt för att konvertera ett datum till en sträng.

Det kräver en dateString argument, vilket är strängen som du vill ska konverteras till ett datum.

Här är ett exempel på att konvertera strängen i ovanstående samling till ett datum:

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

Resultat:

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

Vi kan se att datumet nu är inslaget i ISODate-hjälpen, vilket betyder att det är ett Date-objekt.

$dateFromString operatören accepterar en handfull andra argument, som alla är valfria. Se MongoDB $dateFromString för mer information och exempel.

$toDate Operatör

$toDate aggregeringspipeline-operatör konverterar ett värde till ett datum. Värdet kan vara vilken typ som helst som kan konverteras till ett datum, vilket i princip är siffror, strängar och objekt-ID.

Den här artikeln handlar om att konvertera strängar till datum, så här är ett exempel på hur du använder $toDate för att göra just det:

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

Resultat:

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

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

Resultat:

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

Du kanske har märkt 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. Big Data Processing Engines – Vilken ska jag använda?:Del 1

  2. Mongoose - använder Populate på en array av ObjectId

  3. Behöver en lösning för att slå upp en sträng till objectID outsiderField

  4. Unika poäng för redis leaderboard