Jeśli masz kolekcję MongoDB z datami przechowywanymi jako ciągi, możesz je w razie potrzeby przekonwertować na typ Date BSON.
Poniżej znajdują się trzy sposoby konwersji ciągu na datę w MongoDB.
Przykładowe dane
W przykładach w tym artykule wykorzystano następujący dokument w kolekcji o nazwie dogs
:
{ "_id" : 1, "name" : "Fetch", "born" : "2021-01-03T23:30:15.123" }
Widzimy, że born
pole zawiera datę, ale data ta jest przechowywana jako ciąg.
Możemy użyć następujących operatorów potoku agregacji, aby przekonwertować ten ciąg na datę.
$dateFromString
Operator
$dateFromString
Operator potoku agregacji został zaprojektowany specjalnie do konwersji daty na ciąg.
Wymaga dateString
argument, który jest ciągiem, który chcesz przekonwertować na datę.
Oto przykład konwersji ciągu w powyższej kolekcji na datę:
db.dogs.aggregate([
{
$project: {
born: {
$dateFromString: {
dateString: '$born'
}
}
}
}
])
Wynik:
{ "_id" : 1, "born" : ISODate("2021-01-03T23:30:15.123Z") }
Widzimy, że data jest teraz opakowana w pomocnik ISODate, co oznacza, że jest to obiekt Date.
$dateFromString
operator akceptuje kilka innych argumentów, z których wszystkie są opcjonalne. Zobacz MongoDB $dateFromString
aby uzyskać więcej informacji i przykładów.
$toDate
Operator
$toDate
Operator potoku agregacji konwertuje wartość na datę. Wartość może być dowolnego typu, który można przekonwertować na datę, czyli zasadniczo liczby, łańcuchy i identyfikatory obiektów.
Ten artykuł dotyczy konwertowania ciągów na daty, więc oto przykład użycia $toDate
zrobić właśnie to:
db.dogs.aggregate([
{
$project: {
"born": {
$toDate: "$born"
}
}
}
])
Wynik:
{ "_id" : 1, "born" : ISODate("2021-01-03T23:30:15.123Z") }
Zobacz Mongo $toDate
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: "date",
onError: "An error occurred",
onNull: "Input was null or empty"
}
}
}
}
]
)
Wynik:
{ "_id" : 1, "result" : ISODate("2021-01-03T23:30:15.123Z") }
Być może zauważyłeś, ż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.