Ако имате колекция 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 за повече информация и примери.