MongoDB ma typ Date BSON, który umożliwia przechowywanie dat jako dat.
Możesz także przechowywać daty jako ciągi, jeśli tego potrzebujesz.
Idąc o krok dalej, możesz również przekonwertować Date na ciąg.
W tym artykule przedstawiono trzy sposoby konwersji daty na ciąg w MongoDB.
Przykładowe dane
W przykładach w tym artykule wykorzystano następujący dokument w kolekcji o nazwie cats
:
{
"_id" : 1,
"name" : "Scratch",
"born" : ISODate("2021-01-03T23:30:15.123Z")
}
Zauważ, że born
pole to Data. Poniższe przykłady używają różnych operatorów potoku agregacji, aby przekonwertować to pole na łańcuch.
$dateToString
Operator
$dateToString
Operator potoku agregacji jest najbardziej oczywistym miejscem do rozpoczęcia.
Jak sama nazwa wskazuje, jego jedynym celem jest konwersja daty na ciąg (i zwrócenie wyniku).
Przykład:
db.cats.aggregate(
[
{
$project: {
_id: 0,
dateString: { $dateToString: { format: "%Y-%m-%dT%H:%M:%S.%LZ", date: "$born" } }
}
}
]
)
Wynik:
{ "dateString" : "2021-01-03T23:30:15.123Z" }
Tutaj podałem ciąg formatujący, aby określić format wynikowego ciągu. W tym przypadku użyłem %Y-%m-%dT%H:%M:%S.%LZ
, który jest formatem domyślnym. Gdybym nie określił formatu, jest to format, którego użyłby.
Możesz przenieść te specyfikatory formatu, aby dopasować je do wynikowego ciągu.
Na przykład możemy to zrobić:
db.cats.aggregate( [ { $project: { _id: 0, dateString: { $dateToString: { format: "%d/%m/%Y", date: "$born" } } } } ] )
Wynik:
{ "dateString" : "03/01/2021" }
Zobacz MongoDB $dateToString
aby uzyskać więcej informacji o tym operatorze.
$toString
Operator
$toString
Operator potoku agregacji jest podobny do $dateToString
, poza tym, że może konwertować z różnych typów – nie ogranicza się tylko do konwersji z Daty.
Ale dla naszych celów dokonujemy konwersji z daty.
Przykład:
db.cats.aggregate(
[
{
$project: {
_id: 0,
dateString: { $toString: "$born" }
}
}
]
)
Wynik:
{ "dateString" : "2021-01-03T23:30:15.123Z" }
Ten operator nie daje nam możliwości określenia formatu, więc format jest zwracany bez zmian.
Zobacz MongoDB $toString
aby uzyskać więcej informacji i przykładów.
$convert
Operator
$convert
operator został specjalnie zaprojektowany do konwersji między jednym typem a drugim.
input
parametr określa pole, które chcesz przekonwertować, a to
parametr określa typ, na który chcesz go przekonwertować.
Przykład:
db.cats.aggregate(
[
{
$project:
{
result:
{
$convert: {
input: "$born",
to: "string",
onError: "An error occurred",
onNull: "Input was null or empty"
}
}
}
}
]
)
Wynik:
{ "_id" : 1, "result" : "2021-01-03T23:30:15.123Z" }
Zauważ, że $convert
operator akceptuje również onError
i onNull
parametry, które pozwalają nam dostarczyć komunikat do użycia w przypadku błędu lub null
wartość. Zapobiega to zatrzymaniu całej operacji agregacji i umożliwia wyświetlanie przyjaznego dla użytkownika komunikatu o błędzie w dokumencie wyjściowym.
Zobacz MongoDB $convert
aby uzyskać więcej informacji i przykładów.