日付が文字列として保存されているMongoDBコレクションがある場合は、必要に応じてそれらをDateBSONタイプに変換できます。
以下は、MongoDBで文字列を日付に変換する3つの方法です。
サンプルデータ
この記事の例では、dogs
というコレクションの次のドキュメントを使用しています。 :
{ "_id" : 1, "name" : "Fetch", "born" : "2021-01-03T23:30:15.123" }
born
フィールドには日付が含まれていますが、その日付は文字列として保存されます。
次の集計パイプライン演算子を使用して、その文字列を日付に変換できます。
$dateFromString
オペレーター
$dateFromString
集計パイプライン演算子は、日付を文字列に変換するために特別に設計されました。
dateString
が必要です 引数。これは、日付に変換する文字列です。
上記のコレクションの文字列を日付に変換する例を次に示します。
db.dogs.aggregate([
{
$project: {
born: {
$dateFromString: {
dateString: '$born'
}
}
}
}
])
結果:
{ "_id" : 1, "born" : ISODate("2021-01-03T23:30:15.123Z") }
日付がISODateヘルパーでラップされていることがわかります。これは、日付オブジェクトであることを意味します。
$dateFromString
演算子は他のいくつかの引数を受け入れますが、それらはすべてオプションです。 MongoDB $dateFromString
を参照してください 詳細と例については。
$toDate
オペレーター
$toDate
集計パイプライン演算子は、値を日付に変換します。値は、日付に変換できる任意のタイプにすることができます。これは、基本的に数値、文字列、およびobjectIdsです。
この記事は文字列を日付に変換することに関するものなので、$toDate
の使用例を次に示します。 それを行うには:
db.dogs.aggregate([
{
$project: {
"born": {
$toDate: "$born"
}
}
}
])
結果:
{ "_id" : 1, "born" : ISODate("2021-01-03T23:30:15.123Z") }
Mongo $toDate
を参照してください 詳細と例については。
$convert
オペレーター
$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
を参照してください 詳細と例については。