在MongoDB中将日期转换为字符串的3种方法
MongoDB有一个Date BSON类型,允许您将日期存储为日期。
如果需要,您还可以将日期存储为字符串。
更进一步,您还可以将日期转换为字符串。
本文介绍了三种在MongoDB中将Date转换为字符串的方法。
示例数据
本文中的示例在名为 的集合中使用以下文档:cats
{
"_id" : 1,
"name" : "Scratch",
"born" : ISODate("2021-01-03T23:30:15.123Z")
}
请注意,该字段是日期。以下示例使用各种聚合管道运算符将此字段转换为字符串。born
运营商$dateToString
聚合管道运算符是最明显的起点。[$dateToString](https://database.guide/mongodb-datetostring/ "MongoDB $dateToString")
顾名思义,它的唯一目的是将 Date 转换为字符串(并返回结果)。
例:
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
聚合管道运算符与 类似,不同之处在于它可以从各种类型的转换 - 它不仅限于从 Date 转换。[$toString](https://database.guide/mongodb-tostring/ "MongoDB $toString")``$dateToString
但出于我们的目的,我们正在从日期转换。
例:
db.cats.aggregate(
[
{
$project: {
_id: 0,
dateString: { $toString: "$born" }
}
}
]
)
结果:
{ “dateString” : “2021-01-03T23:30:15.123Z” }
此运算符没有为我们提供指定格式的选项,因此格式按原样返回。
请参阅 MongoDB $toString 了解更多信息和示例。
运营商$convert
该操作员专门设计用于在一种类型和另一种类型之间进行转换。[$convert](https://database.guide/mongodb-convert/ "MongoDB $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 了解更多信息和示例。