$isoWeek (ISO 週番号)
最終更新:2026-10-09
$isoWeek (ISO 週番号)
$isoWeek は日付の ISO 8601 週番号(1 から 53)を返します。ISO の週は月曜日に始まり、最初の木曜日を含む週が第 1 週になります。日曜始まりで 0 を返し得る米国式の $week とは異なります。国際的な週ベースの統計に最適で、$isoWeekYear と組み合わせて年・週のキーを作ることが多いです。timezone が週の境界を決めます。
| カテゴリ | 日付 |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ $isoWeek: { date: <date-expression>, timezone: <timezone> } }
⚙️ パラメータ
| date | 必須。日付式。 |
|---|---|
| timezone | 任意のタイムゾーン。既定は UTC。 |
戻り値:ISO 週番号(1〜53)。date が null の場合は null。
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// $isoWeek: 売上を ISO 週単位で集計
db.sales.aggregate([
{ $group: {
_id: { $isoWeek: { date: '$soldAt', timezone: 'Asia/Shanghai' } },
total: { $sum: '$amount' }
} }
])
出力:
{ "_id": 39, "total": 9800 }
{ "_id": 40, "total": 10450 }
📌 注意事項
- ISO の週は月曜始まり。第 1 週はその年の最初の木曜日を含む週
- $week と違い、$isoWeek は 0 を返さない。範囲は 1〜53
- 通常は $isoWeekYear や $isoDayOfWeek と組み合わせて完全な週キーを作る
🏷️ 関連タグ
💡 関連ケース
さらなる実践ケースを近日公開予定。
📚 関連チュートリアル
❓ よくある質問
Q戻り値の範囲は?
A1 から 53 です。0 は返しません。
Q$week との違いは?
A$week は日曜始まりで 0 を返すことがあります。$isoWeek は ISO 8601 に従い月曜始まりです。
Q年をまたぐ週はどう数えますか?
AISO では木曜日を含む年に属します。正しい年を知るには $isoWeekYear を使います。