Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ / /

$range (agregação)

Nesta página

  • Definição
  • Comportamento
  • Exemplo
$range

Retorna uma array cujos elementos são uma sequência gerada de números. $range gera a sequência a partir do número inicial especificado, incrementando sucessivamente o número inicial com o valor de etapa especificado até o ponto final, mas não o incluindo.

$range tem a seguintesintaxe de expressão do operador :

{ $range: [ <start>, <end>, <non-zero step> ] }
Operando
Descrição
<start>
Um número inteiro que especifica o início da sequência. Pode ser qualquer expressão válida que produza um número inteiro.
<end>
Um número inteiro que especifica o limite superior exclusivo da sequência. Pode ser qualquer expressão válida que produza um número inteiro.
<non-zero step>
Opcional. Um número inteiro que especifica o valor de incremento. Pode ser qualquer expressão válida que produza um número inteiro diferente de zero. O padrão é 1.

Os argumentos <start> e <end> são exigidos e devem ser inteiros. O argumento <non-zero step> é opcional e o padrão é 1 se omitido.

Exemplo
Resultados
{ $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 ]

O exemplo a seguir usa uma coleção chamada distances que lista as cidades junto com a distância em milhas de São Francisco.

Documentos na coleção 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 }
]);

Um ciclista está planejando pedalar de São Francisco para cada cidade listada na coleção e quer parar e descansar a cada 25 quilômetros. A seguinte operação de pipeline de agregação utiliza o operador $range para determinar os pontos de parada para cada viagem.

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 ] }
← $rand (agregação)