sql >> Databáze >  >> NoSQL >> MongoDB

3 způsoby, jak převést řetězec na datum v MongoDB

Pokud máte kolekci MongoDB s daty uloženými jako řetězce, můžete je v případě potřeby převést na typ Date BSON.

Níže jsou uvedeny tři způsoby, jak převést řetězec na datum v MongoDB.

Ukázková data

Příklady v tomto článku používají následující dokument v kolekci nazvané dogs :

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

Vidíme, že born pole obsahuje datum, ale toto datum je uloženo jako řetězec.

K převodu tohoto řetězce na datum můžeme použít následující operátory agregačního kanálu.

$dateFromString Operátor

$dateFromString agregační kanál operátor byl navržen speciálně pro převod data na řetězec.

Vyžaduje dateString argument, což je řetězec, který chcete převést na datum.

Zde je příklad převodu řetězce ve výše uvedené kolekci na datum:

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

Výsledek:

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

Vidíme, že datum je nyní zabaleno do pomocníka ISODate, což znamená, že jde o objekt Date.

$dateFromString operátor přijímá několik dalších argumentů, z nichž všechny jsou volitelné. Viz MongoDB $dateFromString pro další informace a příklady.

$toDate Operátor

$toDate operátor agregačního kanálu převede hodnotu na datum. Hodnota může být jakýkoli typ, který lze převést na datum, což jsou v podstatě čísla, řetězce a identifikátory objektů.

Tento článek je o převodu řetězců na data, takže zde je příklad použití $toDate udělat právě to:

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

Výsledek:

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

Viz Mongo $toDate pro další informace a příklady.

$convert Operátor

$convert operátor byl speciálně navržen pro převod mezi jedním typem a jiným.

input parametr určuje pole, které chcete převést, a to parametr určuje typ, na který jej chcete převést.

Příklad:

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

Výsledek:

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

Možná jste si všimli, že $convert operátor také přijímá onError a onNull parametry, což nám umožňuje poskytnout zprávu k použití v případě chyby nebo null hodnota. To zabraňuje zastavení celé operace agregace a umožňuje to uživatelsky přívětivé chybové hlášení ve výstupním dokumentu.

Viz MongoDB $convert pro další informace a příklady.


  1. .NET Core vloží službu singleton do jiné služby singleton

  2. Chyba Redigo ScanStruct s time.Time

  3. MongoDB $dateToString

  4. Jak spustit redis-server na jiném portu, než je výchozí port 6379 v ubuntu