$dayOfMonth (月内の日)
最終更新:2026-10-09
$dayOfMonth (月内の日)
$dayOfMonth は日付の月内の日(1 から 31)を返します。日単位の統計でよく使われる式です。単純な日付式か、明示的な timezone を持つオブジェクトのどちらも受け付けます。注文を日ごとにグループ化する、日付ラベルを作る、月初を検出するなどの用途があります。整数を返します。タイムゾーンによって日が変わるため、必ず timezone を指定してください(既定は UTC)。
| カテゴリ | 日付 |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ $dayOfMonth: { date: <date-expression>, timezone: <timezone> } }
⚙️ パラメータ
| date | 必須。日付式。 |
|---|---|
| timezone | 任意のタイムゾーン。既定は UTC。 |
戻り値:月内の日(1〜31)を整数で返します。date が null の場合は null。
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// $dayOfMonth: 注文日を取得(北京時間)
db.orders.aggregate([
{ $project: {
day: { $dayOfMonth: { date: '$orderDate', timezone: 'Asia/Shanghai' } }
} }
])
出力:
{ "_id": 1, "day": 25 }
{ "_id": 2, "day": 1 }
📌 注意事項
- ゼロ埋めなしの整数 1〜31。2 桁にするには $dateToString の %d を使う
- $dayOfWeek や $dayOfYear と違い、これは月内の日
- date が null・欠落だと null になる
🏷️ 関連タグ
💡 関連ケース
さらなる実践ケースを近日公開予定。
📚 関連チュートリアル
❓ よくある質問
Q$dayOfMonth と %d の違いは?
A%d は 2 桁の文字列(05)を出力します。$dayOfMonth は整数(5)を出力します。
Q0 始まりですか 1 始まりですか?
A1 始まりです。月の 1 日は 1 になります。
Qタイムゾーンは結果に影響しますか?
Aはい。UTC とローカルゾーンでは日が変わることがあります。timezone を明示的に設定してください。