Docs Menu
Docs Home
/
MongoDB マニュアル
/ / /

$range(集計)

項目一覧

  • 定義
  • 動作
$range

生成された数値のシーケンスが要素である配列を返します。 $rangeは指定された開始番号から、指定されたステップ値で開始番号を連続的に増加させて、終了点までシーケンスを生成します (終了点は含みません)。

$rangeには次の演算子式の構文があります。

{ $range: [ <start>, <end>, <non-zero step> ] }
オペランド
説明
<start>
シーケンスの開始を指定する整数。整数に変換される有効なであれば何でも指定できます。
<end>
シーケンスの排他的上限を指定する整数。整数に変換される有効なであれば何でも指定できます。
<non-zero step>
任意。増分値を指定する整数。0 以外の整数になる有効なであれば何でも指定できます。デフォルトは 1 です。

<start><end> の引数は必須であり、整数である必要があります。<non-zero step> 引数は任意であり、省略した場合はデフォルトで 1 になります。

結果
{ $range: [ 0, 10, 2 ] }
[ 0, 2, 4, 6, 8 ]
{ $range: [ 10, 0, -2 ] }
[ 10, 8, 6, 4, 2 ]
{ $range: [ 0, 10, -2 ] }
[ ]
{ $range: [ 0, 5 ] }
[ 0, 1, 2, 3, 4 ]

次の例では、サンフランシスコからの距離(マイル単位)とともに都市を列挙する distances というコレクションを使用します。

distances コレクション内のドキュメントは、次のとおりです。

db.distances.insertMany([
{ _id: 0, city: "San Jose", distance: 42 },
{ _id: 1, city: "Sacramento", distance: 88 },
{ _id: 2, city: "Reno", distance: 218 },
{ _id: 3, city: "Los Angeles", distance: 383 }
]);

ある自転車乗りが、サンフランシスコからコレクション内の各都市まで自転車で行く計画を立てており、25 マイルごとに立ち止まって休憩したいと考えています。次の集計パイプライン操作では、$range 演算子を使用して各行程の停止点を決定します。

db.distances.aggregate([{
$project: {
_id: 0,
city: 1,
"Rest stops": { $range: [ 0, "$distance", 25 ] }
}
}])

この操作では、以下を返します。

{ "city" : "San Jose", "Rest stops" : [ 0, 25 ] }
{ "city" : "Sacramento", "Rest stops" : [ 0, 25, 50, 75 ] }
{ "city" : "Reno", "Rest stops" : [ 0, 25, 50, 75, 100, 125, 150, 175, 200 ] }
{ "city" : "Los Angeles", "Rest stops" : [ 0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 250, 275, 300, 325, 350, 375 ] }

戻る

$round

項目一覧