$month (月)
最終更新:2026-10-09
$month (月)
$month は日付の月(1〜12)を返します。月次レポートで最もよく使われる式の 1 つです。$year と組み合わせて $group のキーにすると、年月のディメンションを作れます。戻り値はゼロ埋めしない整数で、2 桁の文字列が必要なら $dateToString の %m を使います。timezone は月の境界を決め、既定は UTC です。業務の月次レポートでは必ず timezone を指定してください。
| カテゴリ | 日付 |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ $month: { date: <date-expression>, timezone: <timezone> } }
⚙️ パラメータ
| date | 必須。日付式。 |
|---|---|
| timezone | 任意のタイムゾーン。既定は UTC。 |
戻り値:月(1〜12)。date が null の場合は null。
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// $month + $year: 注文額を月ごとに集計
db.orders.aggregate([
{ $group: {
_id: { y: { $year: { date: '$orderDate' } }, m: { $month: { date: '$orderDate' } } },
total: { $sum: '$amount' }
} }
])
出力:
{ "_id": { "y": 2026, "m": 9 }, "total": 45600 }
{ "_id": { "y": 2026, "m": 10 }, "total": 52300 }
📌 注意事項
- 1 月は 1、12 月は 12
- 月だけを集計キーにせず、必ず年と組み合わせる(年をまたぐと混ざる)
- 既定は UTC — 月次レポートでは timezone を明示的に設定する
🏷️ 関連タグ
💡 関連ケース
さらなる実践ケースを近日公開予定。
📚 関連チュートリアル
❓ よくある質問
Q1〜12 を返しますか?
Aはい — 1 月が 1、12 月が 12 です。
Q2026-09 のような文字列を出力するには?
A$dateToString の %Y-%m 形式を使うか、$month と $year を手動で組み合わせます。
Q月次の統計がずれるのはなぜ?
Aたいていタイムゾーンが原因です — Asia/Shanghai のようなローカルゾーンを渡してください。