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.