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.