$max
정의
$max
참고
v3.2부터 지원이 중단되었습니다
v3.2 부터
$max
연산자 는mongosh
에서 더 이상 사용되지 않습니다.mongosh
에서는cursor.max()
를 대신 사용하세요.의
find()
결과를 제한하기 위해 특정 인덱스$max
에 대한 배타적 상한을 지정하는 값을 지정합니다.$max
은(는) 특정 인덱스 의 모든 키에 대한 상한 을 순서대로 지정합니다.mongosh
은max()
래퍼 메서드를 제공합니다.db.collection.find( { <query> } ).max( { field1: <max value>, ... fieldN: <max valueN> } ) 다음 두 형식 중 하나를 사용하여
$max
를 지정할 수도 있습니다.db.collection.find( { <query> } )._addSpecial( "$max", { field1: <max value1>, ... fieldN: <max valueN> } ) db.collection.find( { $query: { <query> }, $max: { field1: <max value1>, ... fieldN: <max valueN> } } )
행동
인덱스 선택과의 상호 작용
max()
에는 필드에 대한 인덱스가 필요하고 쿼리가 이 인덱스를 사용하도록 강제하므로 가능하면 쿼리에 $lt
연산자를 선호할 수 있습니다. 다음 예시를 살펴보겠습니다.
db.collection.find( { _id: { $in: [ 6, 7 ] } } ).max( { age: 25 } ).hint( { age: 1 } )
_id
의 인덱스 가 더 나을 수도 있지만 쿼리 는 age
필드 의 인덱스 를 사용합니다.
인덱스 바운드
$max
을 $min
와 함께 사용하여 범위 를 지정하는 경우:
$max
으로 지정된 경계는$min
로 지정된 경계보다 커야 합니다.버전 4.0에서 변경됨.
$max
미포함: $min
$min
및 $max
연산자는 시스템에서 일반적인 쿼리 계획을 피해야 함을 나타냅니다. 대신 $min
및 $max
에 지정된 값으로 인덱스 바운드 가 명시적으로 지정되는 인덱스 스캔을 구성합니다.
경고
두 경계 중 하나를 지정하지 않으면 쿼리 계획은 한 쪽이 제한되지 않은 인덱스 스캔이 됩니다. 이렇게 하면 연산자를 모두 포함하지 않는 쿼리 또는 두 연산자를 모두 사용하여 인덱스 스캔을 보다 엄격하게 제한하는 쿼리에 비해 성능이 저하될 수 있습니다.
예시
다음 예제에서는 mongosh
래퍼를 사용합니다.
배타적 상한 지정
인덱스 { age: 1 }
가 있는 collection
컬렉션에 대해 다음 작업을 고려합니다.
db.collection.find( { <query> } ).max( { age: 100 } ).hint( { age: 1 } )
이 작업은 age
필드가 100
보다 작은 문서로 쿼리를 제한하고 MinKey 에서 100 로 { age: 1 }
인덱스를 스캔하는 쿼리 계획을 강제합니다.
함께 사용 $min
다음 예와 같이 $max
을 단독으로 사용하거나 $min
와 함께 사용하여 동일한 인덱스에 대한 특정 범위로 결과를 제한할 수 있습니다.
참고
MongoDB 4.0 부터 $max
로 지정된 경계는 $min
로 지정된 경계보다 커야 합니다.
db.collection.find().min( { age: 20 } ).max( { age: 25 } ).hint( { age: 1 } )