MongoDB聚合运算符:$range

MongoDB聚合运算符:$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集合中的文档列出了几个城市到旧金山San Francisco的距离:

{ _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 ] }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

原子星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值