$range (数値シーケンスの生成)
最終更新:2026-10-09
$range (数値シーケンスの生成)
$range は開始値から終了値未満までの整数シーケンスを、オプションのステップで生成します。$dateAdd との組み合わせによる日付シーケンス、ページングのページ番号生成、テストデータの大量生成などに使われます。ステップの既定値は 1 で、降順シーケンスには負の値を指定します。ステップ 0 はエラーになります。結果は整数の配列で、$map に渡してフィールドを一括生成するのがよくある使い方です。
| カテゴリ | 配列 |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ $range: [ <start>, <end>, <step> ] }
⚙️ パラメータ
| 開始 | 数列の開始整数(含む)。 |
|---|---|
| 終了 | 数列の終了整数(含まない)。 |
| ステップ | 隣接する値の任意の差分。既定は 1 で、0 であってはなりません。 |
戻り値:start から end の手前までの整数の配列
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// $range: 0 から 4 の数値を生成
db.test.aggregate([
{ $project: {
nums: { $range: [0, 5] }
} }
])
出力:
{ '_id': 1, 'nums': [ 0, 1, 2, 3, 4 ] }
📌 注意事項
- 終了値は含まれない。{ $range: [0, 5] } は 0 から 4 を生成する
- ステップ 0 はエラー。負のステップは開始値から降順に生成する
- $map/$dateAdd と組み合わせて日付や数値のシーケンスを作るのが一般的
🏷️ 関連タグ
💡 関連ケース
さらなる実践ケースを近日公開予定。
📚 関連チュートリアル
❓ よくある質問
Q終了値は含まれますか?
Aいいえ — 左閉右開の範囲で、[0, 5] は 4 で終わります。
Q降順シーケンスを作れますか?
Aはい — 負のステップを使います。{ $range: [5, 0, -1] } は 5 から 1 を生成します。
Qステップは 0 にできますか?
Aいいえ — ステップ 0 はエラーになります。