$range (집계)
정의
$range
생성된 숫자 시퀀스를 요소로 하는 배열을 반환합니다.
$range
는 지정된 시작 번호에서 시작 번호를 지정된 단계 값만큼 연속적으로 증가시켜 끝점을 포함하지 않는 범위까지 수열을 생성합니다.$range
에는 다음과 같은 연산자 표현식 구문이 있습니다.{ $range: [ <start>, <end>, <non-zero step> ] }
행동
0}<start>
및 <end>
인수는 필수이며 정수여야 합니다. 2}<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
컬렉션을 사용합니다.
0} 컬렉션의 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 } ]);
한 자전거 운전자가 샌프란시스코에서 컬렉션에 나열된 각 도시로 라이딩을 계획하고 있으며 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 ] }