如何在MongoDB中格式化日期

发布于

如果您有将日期存储为 Date 对象的文档,但您希望以不同的格式返回它们,则可以使用聚合管道运算符。$dateToString

例如,您可能希望以格式返回日期,而不是包含分钟、秒、毫秒等的长格式mm/dd/yyyy``ISODate()

运算符将 Date 对象转换为字符串,并选择性地允许您指定结果输出的格式。$dateToString

例

假设我们有一个包含以下文档的集合:cats

{ “_id” : 1, “name” : “Scratch”, “born” : ISODate(“2021-01-03T23:30:15.123Z”) } { “_id” : 2, “name” : “Meow”, “born” : ISODate(“2019-12-08T04:00:20.112Z”) } { “_id” : 3, “name” : “Fluffy”, “born” : ISODate(“2020-09-24T10:45:01.007Z”) }

我们可以用于返回带有不同格式日期的文档。$dateToString

例如,让我们从日期中删除秒和毫秒:

db.cats.aggregate(
   [
     {
       $project: {
          name: 1,
          formattedDate: { $dateToString: { format: "%Y-%m-%d %H:%M", date: "$born" } }
       }
     }
   ]
)

结果:

{ “_id” : 1, “name” : “Scratch”, “formattedDate” : “2021-01-03 23:30” } { “_id” : 2, “name” : “Meow”, “formattedDate” : “2019-12-08 04:00” } { “_id” : 3, “name” : “Fluffy”, “formattedDate” : “2020-09-24 10:45” }

我们能够使用参数格式化日期。这是一个可选参数,允许您使用零个或多个格式说明符来指示应如何设置日期的格式。format

请参阅 MongoDB $dateToString 格式说明符 有关可与运算符一起使用的格式说明符的完整列表。$dateToString

格式中的日期dd/mm/yyyy

下面是将日期转换为格式的另一个示例:dd/mm/yyyy

db.cats.aggregate(
   [
     {
       $project: {
          _id: 0,
          formattedDate: { $dateToString: { format: "%d/%m/%Y", date: "$born" } }
       }
     }
   ]
)

结果:

{ “formattedDate” : “03/01/2021” } { “formattedDate” : “08/12/2019” } { “formattedDate” : “24/09/2020” }

格式中的日期mm/dd/yyyy

或者把它放在格式中,我们可以简单地切换前两个格式说明符:mm/dd/yyyy

db.cats.aggregate(
   [
     {
       $project: {
          _id: 0,
          formattedDate: { $dateToString: { format: "%m/%d/%Y", date: "$born" } }
       }
     }
   ]
)

结果:

{ “formattedDate” : “01/03/2021” } { “formattedDate” : “12/08/2019” } { “formattedDate” : “09/24/2020” }

返回单个日期部分

您可以根据需要包含任意数量的格式说明符。例如,可以只使用一个格式说明符来仅输出日期的年份部分。

例:

db.cats.aggregate(
   [
     {
       $project: {
          _id: 0,
          formattedDate: { $dateToString: { format: "%Y", date: "$born" } }
       }
     }
   ]
)

结果:

{ “formattedDate” : “2021” } { “formattedDate” : “2019” } { “formattedDate” : “2020” }

不过,请记住,还有其他方法可以从 Date 对象中提取单个日期部分。例如,您可以使用运算符提取年份。[$year](https://database.guide/mongodb-year/ "MongoDB $year")

以下是用于提取每个特定日期部分的各种运算符:

您还可以使用该运算符返回包含分隔到其自己的字段中的所有不同日期部分的文档。[$dateToParts](https://database.guide/mongodb-datetoparts/ "MongoDB $dateToParts")