文档菜单
文档首页
/
MongoDB 手册
/ / /

$range (聚合)

本页内容

  • 定义
  • 行为
  • 示例
$range

返回一个元素为生成数字序列的数组。$range 通过按指定的步长值连续增加起始数值,生成从指定起始数值开始的序列,直到但不包括终点。

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

{ $range: [ <start>, <end>, <non-zero step> ] }
操作数
描述
<start>
指定序列起始的整数。可以是任何有效的表达式,该表达式解析为整数。
<end>
指定序列排他性上限的整数。可以是任何有效的表达式,该表达式解析为整数。
<非零步长>
可选。指定增量值的整数。可以是任何有效的表达式,该表达式解析为非零整数。省略时默认为 1。

<start><end> 参数是必需的,并且必须是整数。省略时,<非零步长> 参数是可选的,默认为 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

本页内容