在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 了解更多信息和示例。