$dateToString (日付のフォーマット)
最終更新:2026-10-09
$dateToString (日付のフォーマット)
$dateToString は、フォーマットパターンを使って日付を文字列に整形します。集計パイプラインで日付を出力する標準的な方法です。パターンは %Y(年)、%m(月)、%d(日)、%H(時)のようなプレースホルダを使い、strftime に似ています。date が null・欠落のときは、onNull にデフォルトが指定されていればそれを返し、そうでなければ null を返します。
| カテゴリ | 日付 |
|---|---|
| MongoDB バージョン | 3.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ $dateToString: { format: <format>, date: <date-expression>, timezone: <timezone>, onNull: <default> } }
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// $dateToString: 注文日をフォーマット
db.orders.aggregate([
{ $project: {
dateStr: { $dateToString: { format: "%Y-%m-%d", date: "$createdAt" } }
} }
])
出力:
{ "_id": 1, "dateStr": "2026-09-25" }
{ "_id": 2, "dateStr": "2026-09-24" }
📌 注意事項
- プレースホルダ: %Y は4桁の年、%m は月、%d は日、%H は時、%M は分、%S は秒
- timezone は任意で既定は UTC。「+08:00」のようなオフセットや「Asia/Shanghai」のような IANA ゾーンを受け付ける
- date が null の場合: onNull が設定されていればそれを返し、なければ null
- MongoDB 6.3+ では簡略化されたフォーマットモードが追加された
🏷️ 関連タグ
💡 関連ケース
さらなる実践ケースを近日公開予定。
📚 関連チュートリアル
❓ よくある質問
Qタイムゾーンはどう指定しますか?
AIANA 名(例: "Asia/Shanghai")または UTC オフセット(例: "+08:00")を使います。既定は UTC です。
Q$dateToString はどのフォーマット指定子をサポートしていますか?
A代表的なものに %Y(年)、%m(月)、%d(日)、%H(時)、%M(分)、%S(秒)、%L(ミリ秒)、%z(UTCオフセット)、%j(年間通算日)があります。完全な一覧は公式ドキュメントを参照してください。
Qdate フィールドが Date 型でない場合はどうなりますか?
ADate 型を期待しています。それ以外の場合は null を返すか、エラーになります(厳密モードによる)。必要なら先に $toDate で変換してください。
QISO 8601 形式で出力できますか?
Aできます。%Y-%m-%dT%H:%M:%S.%LZ を組み合わせると 2026-10-01T08:30:00.000Z のような形式になります。あるいは $isoDate 式を使います。