Ако имате колекция MongoDB с дати, съхранени като низове, можете да ги конвертирате в типа Date BSON, ако е необходимо.
По-долу са три начина за преобразуване на низ в дата в MongoDB.
Примерни данни
Примерите в тази статия използват следния документ в колекция, наречена dogs
:
{ "_id" : 1, "name" : "Fetch", "born" : "2021-01-03T23:30:15.123" }
Можем да видим, че born
полето съдържа дата, но тази дата се съхранява като низ.
Можем да използваме следните оператори на тръбопровода за агрегиране, за да преобразуваме този низ в дата.
$dateFromString
Оператор
$dateFromString
aggregation pipeline operator е проектиран специално за преобразуване на дата в низ.
Изисква dateString
аргумент, който е низът, който искате да бъде преобразуван в дата.
Ето пример за преобразуване на низа в горната колекция в дата:
db.dogs.aggregate([
{
$project: {
born: {
$dateFromString: {
dateString: '$born'
}
}
}
}
])
Резултат:
{ "_id" : 1, "born" : ISODate("2021-01-03T23:30:15.123Z") }
Можем да видим, че датата вече е обвита в помощника ISODate, което означава, че е обект Date.
$dateFromString
операторът приема шепа други аргументи, всички от които са незадължителни. Вижте MongoDB $dateFromString
за повече информация и примери.
$toDate
Оператор
$toDate
Операторът на конвейера за агрегиране преобразува стойност в дата. Стойността може да бъде от всякакъв тип, който може да се преобразува в дата, която по същество е числа, низове и objectIds.
Тази статия е за преобразуването на низове в дати и затова ето пример за използване на $toDate
за да направите точно това:
db.dogs.aggregate([
{
$project: {
"born": {
$toDate: "$born"
}
}
}
])
Резултат:
{ "_id" : 1, "born" : ISODate("2021-01-03T23:30:15.123Z") }
Вижте Mongo $toDate
за повече информация и примери.
$convert
Оператор
$convert
операторът е специално проектиран за преобразуване между един тип в друг.
input
параметърът определя полето, което искате да конвертирате, и to
параметърът определя типа, към който искате да го преобразувате.
Пример:
db.cats.aggregate(
[
{
$project:
{
result:
{
$convert: {
input: "$born",
to: "date",
onError: "An error occurred",
onNull: "Input was null or empty"
}
}
}
}
]
)
Резултат:
{ "_id" : 1, "result" : ISODate("2021-01-03T23:30:15.123Z") }
Може да сте забелязали, че $convert
операторът също така приема onError
и onNull
параметри, което ни позволява да предоставим съобщение, което да използваме в случай на грешка или null
стойност. Това предотвратява спирането на цялата операция на агрегиране и позволява лесно за потребителя съобщение за грешка в изходния документ.
Вижте MongoDB $convert
за повече информация и примери.