정의
버전 8.0에 추가 되었습니다.
이전에 setQuerySettings
로 추가한 쿼리 설정을 반환합니다. 설정은 전체 클러스터 에 적용 됩니다. 클러스터 는 종료 후에도 설정을 유지합니다.
구문
여러 파이프라인 단계를 사용하는 경우 파이프라인 라인에서 $querySettings
을 먼저 배치합니다.
db.aggregate( [ { $querySettings: { showDebugQueryShape: <boolean> } }, // Add any additional pipeline stages after $querySettings ... ] )
명령 필드
$querySettings
는 이 필드를 사용합니다.
필드 | 유형 | 필요성 | 설명 |
---|---|---|---|
| 부울 | 옵션 |
기본값은 |
예시
다음 예제에서는 컬렉션 을 만들고, 쿼리 설정을 추가하고, 설정을 반환합니다.
예시 컬렉션 및 인덱스 만들기
실행:
// 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_1
및 totalNumber_1
입니다.
쿼리 설정 추가
다음 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", comment: "Index hint for orderDate_1 index to improve query performance" } } )
comment
필드 MongoDB 8.1 (및 8.0.4)부터 사용할 수 있습니다.
쿼리 설정 반환
다음 예시 에서는 집계 파이프라인 의 $querySettings
단계를 사용하여 쿼리 설정을 반환합니다.
db.aggregate( [ { $querySettings: { showDebugQueryShape: true } } ] )
showDebugQueryShape
이(가) true
이므로 debugQueryShape
문서 가 출력에 포함됩니다. queryShapeHash
식별자를 사용하여 쿼리 설정을 찾을 수 있습니다. 이 출력에서는 queryShapeHash
및 debugQueryShape
가 강조 표시됩니다.
[ { queryShapeHash: 'AB8ECADEE8F0EB0F447A30744EB4813AE7E0BFEF523B0870CA10FCBC87F5D8F1', settings: { indexHints: [ { ns: { db: 'test', coll: 'pizzaOrders' }, allowedIndexes: [ 'orderDate_1' ] } ], queryFramework: 'classic', comment: 'Index hint for orderDate_1 index to improve query performance' }, 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 } } } ]
이 페이지의 Node.js 예제에서는 Atlas 샘플 데이터 세트의 sample_mflix
데이터베이스 사용합니다. 무료 MongoDB Atlas cluster 생성하고 샘플 데이터 세트를 로드하는 방법을 학습하려면 MongoDB Node.js 운전자 설명서에서 시작하기 를 참조하세요.
MongoDB Node.js 운전자 사용하여 집계 파이프라인 에 $querySettings
단계를 추가하려면 파이프라인 객체 에서 $querySettings
연산자 사용합니다.
$querySettings
단계를 사용하려면 먼저 컬렉션에 인덱스 와 querySettings
를 추가해야 합니다.
다음 코드는 movies
컬렉션 에 두 개의 인덱스를 삽입합니다.
const year = collection.createIndex({ year: 1 }); const title = collection.createIndex({ title: 1 });
다음 코드는 movies
컬렉션 에 쿼리 설정을 추가합니다.
const command = { setQuerySettings: { find: "movies", filter: { year: { $gt: 2011 } }, sort: { title: 1 }, $db: "sample_mflix" }, settings: { indexHints: { ns: { db: "sample_mflix", coll: "movies" }, allowedIndexes: [ "year_1" ] }, queryFramework: "classic", comment: "Index hint for year_1 index to improve query performance" } }; const adminDb = client.db("admin"); const result = adminDb.command(command);
다음 예시 movies
컬렉션 에 대해 이전에 추가한 쿼리 설정을 반환하는 파이프라인 단계를 만듭니다. 이 예시 showDebugQueryShape
옵션을 true
로 설정하여 debugQueryShape
문서 출력에 포함합니다. 그런 다음 이 예시 에서는 집계 파이프라인 실행합니다.
const pipeline = [ { $querySettings: {showDebugQueryShape: true} } ]; const cursor = adminDb.aggregate(pipeline); return cursor;