MongoDBには、日付を日付として保存できるDateBSONタイプがあります。
必要に応じて、日付を文字列として保存することもできます。
さらに一歩進んで、日付を文字列に変換することもできます。
この記事では、MongoDBで日付を文字列に変換する3つの方法を紹介します。
サンプルデータ
この記事の例では、cats
というコレクションの次のドキュメントを使用しています。 :
{
"_id" : 1,
"name" : "Scratch",
"born" : ISODate("2021-01-03T23:30:15.123Z")
}
born
に注意してください フィールドは日付です。次の例では、さまざまな集計パイプライン演算子を使用して、このフィールドを文字列に変換します。
$dateToString
オペレーター
$dateToString
集約パイプラインオペレーターは、開始するのに最も明白な場所です。
その名前が示すように、その唯一の目的は、日付を文字列に変換することです(そして結果を返します)。
例:
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
オペレーター
$toString
集計パイプライン演算子は$dateToString
に似ています 、さまざまなタイプから変換できることを除いて、日付からの変換だけに限定されません。
しかし、私たちの目的のために、私たちは日付から変換しています。
例:
db.cats.aggregate(
[
{
$project: {
_id: 0,
dateString: { $toString: "$born" }
}
}
]
)
結果:
{ "dateString" : "2021-01-03T23:30:15.123Z" }
この演算子には形式を指定するオプションがないため、形式はそのまま返されます。
MongoDB $toString
を参照してください 詳細と例については。
$convert
オペレーター
$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
を参照してください 詳細と例については。