Docs Menu
Docs Home
/
MongoDB 매뉴얼
/ / /

$max

이 페이지의 내용

  • 정의
  • 행동
  • 예시
$max

참고

v3.2부터 지원이 중단되었습니다

v3.2 부터 $max 연산자 는 mongosh 에서 더 이상 사용되지 않습니다. mongosh 에서는 cursor.max() 를 대신 사용하세요.

find() 결과를 제한하기 위해 특정 인덱스 $max 에 대한 배타적 상한을 지정하는 값을 지정합니다. $max 은(는) 특정 인덱스 의 모든 키에 대한 상한 을 순서대로 지정합니다.

mongoshmax() 래퍼 메서드를 제공합니다.

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> } } )

참고

인덱스 사용하기

MongoDB 부터는 4.2 / max() 을(를)hint()실행 하려면 메서드를 사용하여 $max 특정 인덱스 를 명시적으로 지정해야 합니다.find() 단, 쿼리 가 동등 조건인 _id 경우 힌트를 줄 필요가 { _id: <value> } 없습니다. 필드 에 .

max() 에는 필드에 대한 인덱스가 필요하고 쿼리가 이 인덱스를 사용하도록 강제하므로 가능하면 쿼리에 $lt 연산자를 선호할 수 있습니다. 다음 예시를 살펴보겠습니다.

db.collection.find( { _id: { $in: [ 6, 7 ] } } ).max( { age: 25 } ).hint( { age: 1 } )

_id 의 인덱스 가 더 나을 수도 있지만 쿼리 는 age 필드 의 인덱스 를 사용합니다.

$max$min 와 함께 사용하여 범위 를 지정하는 경우:

  • $min$max에 지정된 인덱스 바운드는 모두 동일한 인덱스의 키를 참조해야 합니다.

  • $max 으로 지정된 경계는 $min 로 지정된 경계보다 커야 합니다.

    버전 4.0에서 변경됨.

$min$max 연산자는 시스템에서 일반적인 쿼리 계획을 피해야 함을 나타냅니다. 대신 $min$max에 지정된 값으로 인덱스 바운드 가 명시적으로 지정되는 인덱스 스캔을 구성합니다.

경고

두 경계 중 하나를 지정하지 않으면 쿼리 계획은 한 쪽이 제한되지 않은 인덱스 스캔이 됩니다. 이렇게 하면 연산자를 모두 포함하지 않는 쿼리 또는 두 연산자를 모두 사용하여 인덱스 스캔을 보다 엄격하게 제한하는 쿼리에 비해 성능이 저하될 수 있습니다.

다음 예제에서는 mongosh 래퍼를 사용합니다.

인덱스 { age: 1 } 가 있는 collection 컬렉션에 대해 다음 작업을 고려합니다.

db.collection.find( { <query> } ).max( { age: 100 } ).hint( { age: 1 } )

이 작업은 age 필드가 100 보다 작은 문서로 쿼리를 제한하고 MinKey 에서 100 로 { age: 1 } 인덱스를 스캔하는 쿼리 계획을 강제합니다.

다음 예와 같이 $max 을 단독으로 사용하거나 $min 와 함께 사용하여 동일한 인덱스에 대한 특정 범위로 결과를 제한할 수 있습니다.

참고

MongoDB 4.0 부터 $max 로 지정된 경계는 $min 로 지정된 경계보다 커야 합니다.

db.collection.find().min( { age: 20 } ).max( { age: 25 } ).hint( { age: 1 } )

돌아가기

$hint

이 페이지의 내용