$range (aggregation)
Nesta página
Definição
$range
Returns an array whose elements are a generated sequence of numbers.
$range
generates the sequence from the specified starting number by successively incrementing the starting number by the specified step value up to but not including the end point.$range
tem a seguinte sintaxe de expressão do operador:{ $range: [ <start>, <end>, <non-zero step> ] } OperandoDescrição<start>
An integer that specifies the start of the sequence. Can be any valid expressão that resolves to an integer.
<end>
An integer that specifies the exclusive upper limit of the sequence. Can be any valid expressão that resolves to an integer.
<non-zero step>
Optional. An integer that specifies the increment value. Can be any valid expressão that resolves to a non-zero integer. Defaults to 1.
Comportamento
The <start>
and <end>
arguments are required and must be
integers. The <non-zero step>
argument is optional, and defaults
to 1
if omitted.
Exemplo | Resultados |
---|---|
|
|
|
|
|
|
|
|
Exemplo
The following example uses a collection called distances
that lists cities along with their distance in miles from San
Francisco.
Documents in the distances
collection:
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 } ]);
A bicyclist is planning to ride from San
Francisco to each city listed in the
collection and wants to stop and rest every 25 miles.
The following aggregation pipeline
operation uses the $range
operator to determine
the stopping points for each trip.
db.distances.aggregate([{ $project: { _id: 0, city: 1, "Rest stops": { $range: [ 0, "$distance", 25 ] } } }])
A operação retorna o seguinte:
{ "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 ] }