Docs 菜单
Docs 主页
/
MongoDB Manual
/ / /

$range(聚合)

在此页面上

  • 定义
  • 行为
  • 例子
$range

返回一个数组,其元素是生成的数字序列。 $range通过将起始数字按照指定步长值(直到终点,但不包括终点)依次递增,从指定的起始数字生成序列。

$range具有以下操作符表达式语法:

{ $range: [ <start>, <end>, <non-zero step> ] }
操作数
说明
<start>
一个指定该序列起始位置的整数。可以是解析为整数的任何有效表达式
<end>
一个指定该序列排他性上限的整数。可以是解析为整数的任何有效表达式
<non-zero step>
可选。一个指定递增值的整数。可以是解析为非零整数的任何有效表达式。默认为 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 ] }

后退

$rand

来年

$rank

在此页面上