日付が文字列として保存されている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を参照してください 詳細と例については。