$range (聚合)
定义
行为
<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 ] }