AI 에이전트의 경우: 문서 인덱스는 https://www.mongodb.com/ko-kr/docs/llms.txt에서 사용할 수 있으며, 모든 페이지의 마크다운 버전은 어떤 URL 경로에 .md를 추가하여 사용할 수 있습니다.
Docs Menu

커서.max() (mongosh 메서드)

cursor.max()

중요

Mongo쉬 방법

이 페이지에서는 mongosh 메서드에 대해 설명합니다. 이는 Node.js와 같은 언어별 드라이버에 대한 설명서가 아닙니다.

MongoDB API 드라이버의 경우 언어별 MongoDB 드라이버 설명서를 참조하세요.

find()의 결과를 제한하기 위해 특정 인덱스에 대한 배타적 상한을 지정합니다. max()는 복합 키 인덱스의 상한을 지정하는 방법을 제공합니다.

max() 메서드에는 다음과 같은 매개변수가 있습니다.

Parameter
유형
설명

indexBounds

문서

인덱스 키의 배타적 상한입니다.

indexBounds 매개변수의 프로토타입 형식은 다음과 같습니다.

{ field1: <max value>, field2: <max value2> ... fieldN:<max valueN> }

필드는 특정 인덱스의 모든 키에 순서대로 해당됩니다.

참고

인덱스 사용하기

max() 메서드와 함께 인덱스를 사용하려면 find() 쿼리가 _id 필드의 동등 조건인 경우를 제외하고는 hint() 메서드를 사용하여 사용하려는 인덱스를 지정해야 합니다.

max() 는 주로 mongos ( 샤딩) 프로세스 를 지원 하기 위해 존재합니다.

이 메서드는 다음 환경에서 호스팅되는 배포에서 사용할 수 있습니다.

  • MongoDB Atlas: 클라우드에서의 MongoDB 배포를 위한 완전 관리형 서비스

참고

이 명령은 모든 MongoDB Atlas 클러스터에서 지원됩니다. 모든 명령에 대한 Atlas 지원에 관해 자세히 알아보려면 지원되지 않는 명령을 참조하십시오.

max()는 필드에 인덱스가 필요하고 쿼리가 이 인덱스를 사용하도록 강요하기 때문에 가능하면 쿼리에 $lt 연산자를 사용하는 것이 좋습니다. 다음 예시를 활용할 수 있습니다.

db.products.find( { _id: { $in: [ 6, 7 ] } } ).max( { price: Decimal128("1.39") } ).hint( { price: 1 } )

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

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

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

경고

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

참고

를 hint() max() 실행 find() 하려면 필드 를 사용하여 특정 인덱스 _id 를 명시적으로 { _id: <value> } 지정해야 쿼리 .

아래 예시에서는 다음 문서를 포함하는 products 라는 이름의 샘플 컬렉션 을 만듭니다.

db.products.insertMany([
{ "_id" : 1, "item" : "apple", "type" : "honey crisp", "price" : Decimal128("1.99") },
{ "_id" : 2, "item" : "apple", "type" : "fuji", "price" : Decimal128("1.99") },
{ "_id" : 3, "item" : "apple", "type" : "jonagold", "price" : Decimal128("1.29") },
{ "_id" : 4, "item" : "apple", "type" : "jonathan", "price" : Decimal128("1.29") },
{ "_id" : 5, "item" : "apple", "type" : "mcintosh", "price" : Decimal128("1.29") },
{ "_id" : 6, "item" : "apple", "type" : "cortland", "price" : Decimal128("1.29") },
{ "_id" : 7, "item" : "orange", "type" : "cara cara", "price" : Decimal128("2.99") },
{ "_id" : 9, "item" : "orange", "type" : "satsuma", "price" : Decimal128("1.99") },
{ "_id" : 8, "item" : "orange", "type" : "valencia", "price" : Decimal128("0.99") },
{ "_id" : 10, "item" : "orange", "type" : "navel", "price" : Decimal128("1.39") }
])

컬렉션에 다음 인덱스를 만듭니다.

db.products.createIndexes( [
{ "item" : 1, "type" : 1 },
{ "item" : 1, "type" : -1 },
{ "price" : 1 }
] )
  • { item: 1, type: 1 } 인덱스max() 의 순서를 사용하여 item 인 apple 및 type 인 jonagold 의 경계 아래에 있는 문서로 쿼리 를 제한합니다.

    db.products.find().max( { item: 'apple', type: 'jonagold' } ).hint( { item: 1, type: 1 } )

    이 쿼리는 다음 문서를 반환합니다.

    { "_id" : 6, "item" : "apple", "type" : "cortland", "price" : Decimal128("1.29") }
    { "_id" : 2, "item" : "apple", "type" : "fuji", "price" : Decimal128("1.99") }
    { "_id" : 1, "item" : "apple", "type" : "honey crisp", "price" : Decimal128("1.99") }
  • 인덱스 { price: 1 }의 순서를 사용하여 max()는 Decimal128("1.99")과 동일한 price의 인덱스 키 경계 아래에 있는 문서로 쿼리를 제한하고 min())은 Decimal128("1.39")과 동일한 price의 인덱스 키 경계 위에 있거나 위에 있는 문서로 쿼리를 제한합니다.

    참고

    max()에서 지정한 바운드가 min()에서 지정한 바운드보다 커야 합니다.

    db.products.find().min( { price: Decimal128("1.39") } ).max( { price: Decimal128("1.99") } ).hint( { price: 1 } )

    이 쿼리는 다음 문서를 반환합니다.

    { "_id" : 10, "item" : "orange", "type" : "navel", "price" : Decimal128("1.39") }
이 페이지 평가하기

이 페이지의 내용