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.