MongoDB има тип BSON за дата, който ви позволява да съхранявате дати като дати.
Можете също да съхранявате дати като низове, ако това е, от което се нуждаете.
Като направите още една стъпка напред, можете също да преобразувате дата в низ.
Тази статия представя три начина за преобразуване на дата в низ в MongoDB.
Примерни данни
Примерите в тази статия използват следния документ в колекция, наречена cats
:
{
"_id" : 1,
"name" : "Scratch",
"born" : ISODate("2021-01-03T23:30:15.123Z")
}
Забележете, че born
полето е Дата. Следващите примери използват различни оператори на конвейер за агрегиране, за да преобразуват това поле в низ.
$dateToString
Оператор
$dateToString
операторът на тръбопровода за агрегация е най-очевидното място за начало.
Както подсказва името му, единствената му цел е да преобразува дата в низ (и да върне резултата).
Пример:
db.cats.aggregate(
[
{
$project: {
_id: 0,
dateString: { $dateToString: { format: "%Y-%m-%dT%H:%M:%S.%LZ", date: "$born" } }
}
}
]
)
Резултат:
{ "dateString" : "2021-01-03T23:30:15.123Z" }
Тук предоставих форматен низ, за да посочите формата на резултантния низ. В този случай използвах %Y-%m-%dT%H:%M:%S.%LZ
, който е форматът по подразбиране. Ако не бях посочил формат, това е форматът, който щеше да използва.
Можете да преместите тези спецификатори на формат, за да отговарят на получения низ.
Например, можем да направим това:
db.cats.aggregate( [ { $project: { _id: 0, dateString: { $dateToString: { format: "%d/%m/%Y", date: "$born" } } } } ] )
Резултат:
{ "dateString" : "03/01/2021" }
Вижте MongoDB $dateToString
за повече информация относно този оператор.
$toString
Оператор
$toString
Операторът на конвейера за агрегиране е подобен на $dateToString
, с изключение на това, че може да конвертира от различни типове – не се ограничава само до конвертиране от дата.
Но за нашите цели ние преобразуваме от дата.
Пример:
db.cats.aggregate(
[
{
$project: {
_id: 0,
dateString: { $toString: "$born" }
}
}
]
)
Резултат:
{ "dateString" : "2021-01-03T23:30:15.123Z" }
Този оператор не ни дава възможност да посочим формат, така че форматът се връща такъв, какъвто е.
Вижте MongoDB $toString
за повече информация и примери.
$convert
Оператор
$convert
операторът е специално проектиран за преобразуване между един тип в друг.
input
параметърът определя полето, което искате да конвертирате, и to
параметърът определя типа, към който искате да го преобразувате.
Пример:
db.cats.aggregate(
[
{
$project:
{
result:
{
$convert: {
input: "$born",
to: "string",
onError: "An error occurred",
onNull: "Input was null or empty"
}
}
}
}
]
)
Резултат:
{ "_id" : 1, "result" : "2021-01-03T23:30:15.123Z" }
Забележете, че $convert
операторът също така приема onError
и onNull
параметри, което ни позволява да предоставим съобщение, което да използваме в случай на грешка или null
стойност. Това предотвратява спирането на цялата операция на агрегиране и позволява лесно за потребителя съобщение за грешка в изходния документ.
Вижте MongoDB $convert
за повече информация и примери.