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

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

MongoDB má typ Date BSON, který vám umožňuje ukládat data jako data.

Data můžete také uložit jako řetězce, pokud to potřebujete.

Když to vezmeme o krok dále, můžete také převést datum na řetězec.

Tento článek představuje tři způsoby, jak převést datum na řetězec v MongoDB.

Ukázková data

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

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

Všimněte si, že born pole je Datum. Následující příklady používají různé operátory agregačního kanálu k převodu tohoto pole na řetězec.

$dateToString Operátor

$dateToString Operátor agregačního kanálu je nejviditelnější místo, kde začít.

Jak jeho název napovídá, jeho jediným účelem je převést datum na řetězec (a vrátit výsledek).

Příklad:

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

Výsledek:

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

Zde jsem uvedl formátovací řetězec pro určení formátu výsledného řetězce. V tomto případě jsem použil %Y-%m-%dT%H:%M:%S.%LZ , což je výchozí formát. Kdybych neurčil formát, použil by tento formát.

Tyto specifikátory formátu můžete přesouvat tak, aby vyhovovaly výslednému řetězci.

Mohli bychom například udělat toto:

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

Výsledek:

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

Viz MongoDB $dateToString pro více informací o tomto operátorovi.

$toString Operátor

$toString Operátor agregačního kanálu je podobný $dateToString , kromě toho, že dokáže převádět z různých typů – neomezuje se pouze na převod z data.

Ale pro naše účely převádíme z Date.

Příklad:

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

Výsledek:

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

Tento operátor nám nedává možnost specifikovat formát, takže formát je vrácen tak, jak je.

Viz MongoDB $toString 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: "string",
              onError: "An error occurred",
              onNull: "Input was null or empty" 
            }
          }
        }
    }
  ]
)

Výsledek:

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

Všimněte si, ž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. ruby resque bez nakládacích kolejnic prostředí

  2. Jak používat řazené seznamy Redis

  3. Použití Redis Replication na různých počítačích (multi master)

  4. Proč jedna instance Jedis není bezpečná pro vlákna?