$dateToParts (日付を部品に分解)
最終更新:2026-10-09
$dateToParts (日付を部品に分解)
$dateToParts は日付を year、month、day、hour、minute、second、millisecond のドキュメントに分解します。$dateFromParts の逆関数です。iso8601 を true にすると、isoWeekYear、isoWeek、isoDayOfWeek を出力します。年や月ごとの統計($group の _id として使う)や、日付を読みやすいドキュメントとして出力するなどの用途があります。timezone が分解の基準になり、既定は UTC です。タイムゾーンをまたぐレポートでは必ず指定してください。
| カテゴリ | 日付 |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ $dateToParts: { date: <date-expression>, timezone: <timezone>, iso8601: <boolean> } }
⚙️ パラメータ
| date | 必須。分割する日付式。 |
|---|---|
| timezone | 任意のタイムゾーン。既定は UTC。 |
| iso8601 | 任意。true の場合は ISO 週カレンダーのフィールドを出力します。 |
戻り値:year/month/day/hour/minute/second/millisecond(または ISO フィールド)を持つドキュメント。date が null の場合は null。
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// $dateToParts: 注文時刻を部品に分解(北京時間)
db.orders.aggregate([
{ $project: { parts: { $dateToParts: { date: '$createdAt', timezone: 'Asia/Shanghai' } } } }
])
出力:
{ "_id": 1, "parts": { "year": 2026, "month": 9, "day": 25, "hour": 8, "minute": 30, "second": 0, "millisecond": 0 } }
📌 注意事項
- キーは固定: year、month、day、hour、minute、second、millisecond
- iso8601: true にするとキーが isoWeekYear、isoWeek、isoDayOfWeek になる
- 既定は UTC。タイムゾーンをまたぐ統計では必ず timezone を指定する
🏷️ 関連タグ
💡 関連ケース
さらなる実践ケースを近日公開予定。
📚 関連チュートリアル
❓ よくある質問
Q出力されるフィールド名は?
A固定のキーです: year、month、day、hour、minute、second、millisecond。
Q月ごとの統計をまとめるには?
A$dateToParts で分解し、$group で _id を year/month の組み合わせにします。
Qiso8601 は何をしますか?
Atrue にすると ISO 週暦のフィールドを出力し、週ベースの統計に使えます。