在MongoDB中将字符串转换为日期的3种方法
如果你有一个 MongoDB 集合,其中日期存储为字符串,如果需要,你可以将它们转换为 Date BSON 类型。
以下是在MongoDB中将字符串转换为Date的三种方法。
示例数据
本文中的示例在名为 的集合中使用以下文档:dogs
{ “_id” : 1, “name” : “Fetch”, “born” : “2021-01-03T23:30:15.123” }
我们可以看到该字段包含一个日期,但该日期存储为字符串。born
我们可以使用以下聚合管道运算符将该字符串转换为日期。
运营商$dateFromString
聚合管道运算符专门用于将日期转换为字符串。[$dateFromString](https://database.guide/mongodb-datefromstring/ "MongoDB $dateFromString")
它需要一个参数,该参数是要转换为日期的字符串。dateString
下面是将上述集合中的字符串转换为日期的示例:
db.dogs.aggregate([
{
$project: {
born: {
$dateFromString: {
dateString: '$born'
}
}
}
}
])
结果:
{ “_id” : 1, “born” : ISODate(“2021-01-03T23:30:15.123Z”) }
我们可以看到日期现在包装在 ISODate 帮助程序中,这意味着它是一个 Date 对象。
运算符接受一些其他参数,所有这些参数都是可选的。请参阅 MongoDB $dateFromString 了解更多信息和示例。$dateFromString
运营商$toDate
聚合管道运算符将值转换为日期。该值可以是可以转换为日期的任何类型,基本上是数字、字符串和对象 ID。[$toDate](https://database.guide/mongodb-todate/ "MongoDB $toDate")
本文是关于将字符串转换为日期的,因此下面是一个用于执行此操作的示例:$toDate
db.dogs.aggregate([
{
$project: {
"born": {
$toDate: "$born"
}
}
}
])
结果:
{ “_id” : 1, “born” : ISODate(“2021-01-03T23:30:15.123Z”) }
请参阅 Mongo $toDate 了解更多信息和示例。
运营商$convert
该操作员专门设计用于在一种类型和另一种类型之间进行转换。[$convert](https://database.guide/mongodb-convert/ "MongoDB $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 了解更多信息和示例。