문서 메뉴
문서 홈
/
MongoDB 매뉴얼
/ / /

planCacheSetFilter

이 페이지의 내용

  • 정의
  • 필요한 액세스 권한
  • 예제
planCacheSetFilter

컬렉션에 인덱스 필터 를 설정합니다. 쿼리 형태 에 대한 인덱스 필터가 이미 있는 경우 명령은 이전 인덱스 필터를 재정의합니다.

명령은 다음과 같은 구문을 가집니다:

db.runCommand(
{
planCacheSetFilter: <collection>,
query: <query>,
sort: <sort>,
projection: <projection>,
indexes: [ <index1>, <index2>, ...],
comment: <any>
}
)

planCacheSetFilter 명령에는 다음 필드가 있습니다.

필드
유형
설명
planCacheSetFilter
문자열
컬렉션의 이름입니다.
query
문서

인덱스 필터와 연결된 쿼리 조건자입니다. sortprojection 와 함께 query 조건자는 지정된 인덱스 필터에 대한 쿼리 형태 를 구성합니다.

필드 이름을 포함한 술어의 구조만 중요합니다. 즉, 쿼리 조건자의 값이 중요하지 않습니다. 따라서 쿼리 조건자는 값만 다른 유사한 쿼리를 다룹니다.

sort
문서
선택 사항. 필터와 연결된 정렬입니다. queryprojection 과 함께 sort 는 지정된 인덱스 필터의 쿼리 형태 를 구성합니다.
projection
문서
선택 사항. 필터와 연결된 프로젝션입니다. querysort 과 함께 projection 는 지정된 인덱스 필터의 쿼리 형태 를 구성합니다.
indexes
배열

지정된 쿼리 형태에 대한 인덱스 필터의 배열입니다.

인덱스 필터를 다음 중 하나로 지정합니다.

  • 인덱스 사양 문서 배열, 예: [ { x : 1 }, ... ]

  • 인덱스 이름 배열, 예: [ "x_1", ... ]

쿼리 옵티마이저는 컬렉션 스캔과 이러한 인덱스 중에서 선택하기 때문에 지정된 인덱스가 존재하지 않거나 숨겨진 경우 옵티마이저는 컬렉션 스캔을 선택합니다.

동일한 키 패턴을 가진 인덱스가 여러 개 있는 경우에는 이름으로 인덱스를 지정해야 합니다.

comment
어떤

선택 사항. 이 명령에 첨부할 사용자 제공 코멘트입니다. 설정되면 이 설명은 다음 위치에서 이 명령의 레코드와 함께 표시됩니다.

댓글은 유효한 모든 BSON types (문자열, 정수, 객체, 배열 등)이 될 수 있습니다.

인덱스 필터는 서버 프로세스가 진행되는 동안에만 존재하며 종료 후에는 유지되지 않습니다. 그러나 planCacheClearFilters 명령을 사용하여 기존 인덱스 필터를 지울 수도 있습니다.

사용자는 planCacheIndexFilter 조치를 포함하는 액세스 권한이 있어야 합니다.

다음 예에서는 orders collection에 대한 인덱스 필터를 만들어 프로젝션 및 정렬 없이 status 필드의 동등성 매치로만 구성된 쿼리의 경우 쿼리 옵티마이저는 지정된 두 인덱스만 평가하고 컬렉션 스캔은 다음에 대해 성공적인 계획:

db.runCommand(
{
planCacheSetFilter: "orders",
query: { status: "A" },
indexes: [
{ cust_id: 1, status: 1 },
{ status: 1, order_date: -1 }
]
}
)

쿼리 조건자에서는 필드 이름을 포함한 조건자의 구조만 중요합니다. 값은 중요하지 않습니다. 따라서 생성된 필터는 다음 작업에 적용됩니다.

db.orders.find( { status: "D" } )
db.orders.find( { status: "P" } )

MongoDB가 쿼리 형태에 인덱스 필터를 적용할지 여부를 확인하려면 indexFilterSet db.collection.explain() cursor.explain() 또는 메서드의 필드를 확인합니다.

다음 예제에서는 orders collection에 대한 인덱스 필터를 만듭니다. 이 필터는 조건자가 item 필드의 동등성 매치인 쿼리에 적용되며, 여기서 quantity 필드만 프로젝션되고 order_date 기준 오름차순 정렬이 지정됩니다.

db.runCommand(
{
planCacheSetFilter: "orders",
query: { item: "ABC" },
projection: { quantity: 1, _id: 0 },
sort: { order_date: 1 },
indexes: [
{ item: 1, order_date: 1 , quantity: 1 }
]
}
)

쿼리 형태의 경우 쿼리 옵티마이저는 인덱스 { item: 1, order_date: 1, quantity: 1 } 를 사용하는 인덱싱된 계획만 고려합니다.

다음도 참조하세요.

돌아가기

planCacheListFilters

다음

Authentication Commands