$week (週番号)
最終更新:2026-10-09
$week (週番号)
$week は米国式の週番号(0〜53)を返します。週は日曜始まりで、週 1 は年の最初の日曜から始まり、それより前の日付は週 0 になります。ISO 規格の $isoWeek とは異なるため、国際的な統計には $isoWeek を推奨します。戻り値は整数で、timezone が週の境界を決め、既定は UTC です。
| カテゴリ | 日付 |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ $week: { date: <date-expression>, timezone: <timezone> } }
⚙️ パラメータ
| date | 必須。日付式。 |
|---|---|
| timezone | 任意のタイムゾーン。既定は UTC。 |
戻り値:週番号(0〜53)。date が null の場合は null。
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// $week: 売上を米国式の週番号で集計
db.sales.aggregate([
{ $group: {
_id: { $week: { date: '$soldAt', timezone: 'Asia/Shanghai' } },
total: { $sum: '$amount' }
} }
])
出力:
{ "_id": 38, "total": 8300 }
{ "_id": 39, "total": 9800 }
📌 注意事項
- 週は日曜始まり。年の最初の日曜より前の日付は週 0 になる
- $isoWeek とは異なる: こちらは月曜始まりで週 0 がない
- 年と組み合わせる — 週をまたぐ場合の曖昧さは $year で解消する
🏷️ 関連タグ
💡 関連ケース
さらなる実践ケースを近日公開予定。
📚 関連チュートリアル
❓ よくある質問
Qなぜ 0 が現れるのですか?
A1 月 1 日から最初の日曜日までの日付は週 0 になります。
Q国際業務には $week と $isoWeek のどちらが適していますか?
A国際業務には $isoWeek を使ってください。$week は米国の慣習です。
Q最大値は?
A$isoWeek の 1〜53 とは違い、0〜53 です。