$querySettings (aggregation)
定義
バージョン8.0の新機能。
以前に setQuerySettings
で追加されたクエリ設定を返します。 設定はクラスター全体に適用されます。 クラスターはシャットダウン後も設定を保持します。
構文
複数のパイプライン ステージを使用する場合は、パイプラインの最初に$querySettings
を配置します。
db.aggregate( [ { $querySettings: { showDebugQueryShape: <boolean> } }, // Add any additional pipeline stages after $querySettings ... ] )
コマンドフィールド
$querySettings
このフィールドは、次のフィールドがあります。
フィールド | タイプ | 必要性 | 説明 |
---|---|---|---|
| ブール値 | 任意 |
デフォルトは、 |
例
次の例では、コレクションを作成し、クエリ設定を追加して、設定を返します。
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_1
とtotalNumber_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 } } ] )
showDebugQueryShape
はtrue
であるため、 debugQueryShape
ドキュメントが出力に含まれます。 クエリ設定を見つけるには、 queryShapeHash
識別子を使用します。 この出力では、 queryShapeHash
とdebugQueryShape
が強調表示されています。
[ { 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 } } } ]