Definición
$rangeDevuelve una matriz cuyos elementos son una secuencia generada de números.
$rangegenera la secuencia a partir del número inicial especificado incrementando sucesivamente el número inicial mediante el valor de paso especificado hasta el punto final, pero sin incluirlo.$rangetiene lo siguiente Sintaxis de expresión del operador:{ $range: [ <start>, <end>, <non-zero step> ] } OperandoDescripción<start>Un entero que especifica el inicio de la secuencia. Puede ser cualquier expresión válida que se resuelva en un entero.
<end>Un entero que especifica el límite superior exclusivo de la secuencia. Puede ser cualquier expresión válida que se resuelva en un entero.
<non-zero step>Opcional. Un entero que especifica el valor de incremento. Puede ser cualquier expresión válida que se resuelva en un entero distinto de cero. El valor predeterminado 1 es.
Comportamiento
Los argumentos <start> y <end> son obligatorios y deben ser números enteros. El argumento <non-zero step> es opcional y, si se omite, su valor predeterminado es 1.
Ejemplo | Resultados |
|---|---|
|
|
|
|
|
|
|
|
Ejemplo
El siguiente ejemplo utiliza una colección llamada distances que enumera ciudades junto con su distancia en millas desde San Francisco.
Documentos en la colección 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 } ]);
Un ciclista planea viajar desde San Francisco a cada ciudad de la colección y desea parar a descansar cada 25 millas. La siguiente operación de agregación utiliza el operador $range para determinar los puntos de parada de cada viaje.
db.distances.aggregate([{ $project: { _id: 0, city: 1, "Rest stops": { $range: [ 0, "$distance", 25 ] } } }])
La operación devuelve lo siguiente:
{ "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 ] }