MongoDB $range 运算符介绍
$range
是 MongoDB 聚合管道中的一个运算符,用于生成数字序列。它可以接收三个参数,分别是序列的起始值、结束值和步长。根据这三个参数, $range
可以生成一个数字序列。
语法
$range
运算符的语法如下:
{ $range: [ <start>, <end>, <step> ] }
其中, <start>
是序列的起始值, <end>
是序列的结束值, <step>
是序列的步长。这三个参数都是可选的,如果没有指定,则默认为 $range
生成一个空数组。
使用场景
$range
运算符通常用于生成数字序列,可以配合其他聚合运算符实现更复杂的操作,比如 $map
、 $zip
等。它可以用于生成序列数组、日期数组等。在聚合管道中,可以使用 $range
生成指定范围内的数字序列,然后对序列进行聚合操作。
示例
示例 1
下面的聚合管道使用 $range
运算符,生成一个序列数组:
db.numbers.aggregate([
{
$project: {
sequence: {
$range: [0, 10, 2]
}
}
}
])
运行以上聚合操作,可以得到以下结果:
{
"sequence": [0, 2, 4, 6, 8, 10]
}
示例 2
下面的聚合管道使用 $range
运算符和 $map
运算符,生成一个日期数组:
db.orders.aggregate([
{
$project: {
_id: 0,
dates: {
$map: {
input: {
$range: [
new Date("2022-01-01"),
new Date("2022-01-05"),
24 * 60 * 60 * 1000
]
},
as: "date",
in: {
$dateToString: {
date: "$$date",
format: "%Y-%m-%d"
}
}
}
}
}
}
])
运行以上聚合操作,可以得到以下结果:
{
"dates": [
"2022-01-01",
"2022-01-02",
"2022-01-03",
"2022-01-04",
"2022-01-05"
]
}
结论
$range
是 MongoDB 聚合管道中的一个实用的运算符,可以用于生成数字序列、日期数组等。它可以配合其他聚合运算符实现更复杂的操作,在聚合管道中使用十分灵活。