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

$querySettings (aggregation)

이 페이지의 내용

  • 정의
  • 구문
  • 명령 필드
  • 예제
  • 자세히 알아보기
$querySettings

버전 8.0에 추가 되었습니다.

이전에 setQuerySettings 로 추가한 쿼리 설정을 반환합니다. 설정은 전체 클러스터 에 적용 됩니다. 클러스터 는 종료 후에도 설정을 유지합니다.

여러 파이프라인 단계를 사용하는 경우 파이프라인에서 $querySettings 를 먼저 배치합니다.

db.aggregate( [
{ $querySettings: { showDebugQueryShape: <boolean> } },
// Add any additional pipeline stages after $querySettings
...
] )

$querySettings 는 이 필드를 사용합니다.

필드
유형
필요성
설명
showDebugQueryShape
부울
옵션

true 인 경우 $querySettings쿼리 형태 출력의 디버깅 버전을 반환합니다. 다음 섹션에서 예제를 볼 수 있습니다. 출력에 대한 자세한 내용은 쿼리 형태를 참조하세요.

기본값은 false입니다.

다음 예제에서는 컬렉션을 만들고, 쿼리 설정을 추가하고, 설정을 반환합니다.

1

실행:

// Create pizzaOrders collection
db.pizzaOrders.insertMany( [
{ _id: 0, type: "pepperoni", totalNumber: 5,
orderDate: new Date( "2024-01-15T12:00:00Z" ) },
{ _id: 1, type: "cheese", totalNumber: 15,
orderDate: new Date( "2024-01-23T11:12:32Z" ) },
{ _id: 2, type: "vegan", totalNumber: 20,
orderDate: new Date( "2024-03-20T10:01:12Z" ) }
] )
// Create ascending index on orderDate field
db.pizzaOrders.createIndex( { orderDate: 1 } )
// Create ascending index on totalNumber field
db.pizzaOrders.createIndex( { totalNumber: 1 } )

인덱스의 기본 이름은 orderDate_1totalNumber_1 입니다.

2

다음 setQuerySettings 예시에서는 쿼리 설정을 추가합니다.

db.adminCommand( {
setQuerySettings: {
find: "pizzaOrders",
filter: {
orderDate: { $gt: ISODate( "2024-01-20T00:00:00Z" ) }
},
sort: {
totalNumber: 1
},
$db: "test"
},
settings: {
indexHints: {
ns: { db: "test", coll: "pizzaOrders" },
allowedIndexes: [ "orderDate_1" ]
},
queryFramework: "classic"
}
} )
3

다음 예제에서는 집계 파이프라인의 $querySettings 단계를 사용하여 쿼리 설정을 반환합니다.

db.aggregate( [ {
$querySettings: { showDebugQueryShape: true }
} ] )

showDebugQueryShapetrue 이므로 debugQueryShape 문서가 출력에 포함됩니다. queryShapeHash 식별자를 사용하여 쿼리 설정을 찾을 수 있습니다. 이 출력에서는 queryShapeHashdebugQueryShape 가 강조 표시됩니다.

[
{
queryShapeHash: 'AB8ECADEE8F0EB0F447A30744EB4813AE7E0BFEF523B0870CA10FCBC87F5D8F1',
settings: {
indexHints: [
{
ns: { db: 'test', coll: 'pizzaOrders' },
allowedIndexes: [ 'orderDate_1' ]
}
],
queryFramework: 'classic'
},
representativeQuery: {
find: 'pizzaOrders',
filter: { orderDate: { '$gt': ISODate('2023-01-20T00:00:00.000Z') } },
sort: { totalNumber: 1 },
'$db': 'test'
},
debugQueryShape: {
cmdNs: { db: 'test', coll: 'pizzaOrders' },
command: 'find',
filter: { orderDate: { '$gt': '?date' } },
sort: { totalNumber: 1 }
}
}
]

돌아가기

프로젝트