Definición
Nuevo en la versión 8.0.
Devuelve los ajustes de query que se agregaron previamente con
setQuerySettings. La configuración se aplica a todo el clúster. El clúster conserva la configuración después del cierre.
Sintaxis
Si utiliza múltiples etapas de pipeline, coloque $querySettings primero en el pipeline.
db.aggregate( [ { $querySettings: { showDebugQueryShape: <boolean> } }, // Add any additional pipeline stages after $querySettings ... ] )
Campos de comandos
$querySettings toma este campo:
Campo | Tipo | Necesidad | Descripción |
|---|---|---|---|
| booleano | Opcional | Si El valor por defecto es |
Ejemplos
Los siguientes ejemplos crean una colección, agregan configuraciones de consulta y devuelven las configuraciones:
Cree la colección de ejemplo y los índices
Ejecuta:
// 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 } )
Los índices tienen los nombres por defecto orderDate_1 y totalNumber_1.
Agrega la configuración de la query
El siguiente ejemplo setQuerySettings agrega configuraciones de consulta:
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" } } )
El campo comment está disponible a partir de MongoDB 8.1 (y 8.0.4).
Devolver la configuración de la consulta
El siguiente ejemplo utiliza una etapa $querySettings en una pipeline de agregación para devolver configuraciones de queries:
db.aggregate( [ { $querySettings: { showDebugQueryShape: true } } ] )
Debido a que showDebugQueryShape es true, el documento debugQueryShape se incluye en la salida. Puede utilizar el identificador queryShapeHash para localizar la configuración de query. queryShapeHash y debugQueryShape están resaltados en este resultado:
[ { 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 } } } ]
Los ejemplos de Node.js en esta página utilizan la base de datos sample_mflix de
Conjuntos de datos de muestra de Atlas. Para aprender cómo crear un clúster gratuito de MongoDB Atlas y cargar los conjuntos de datos de muestra, consulta Comenzar en la documentación del controlador MongoDB Node.js.
Para utilizar el controlador de MongoDB Node.js para agregar una etapa de $querySettings a una canalización de agregación, utilice el Operador $querySettings en un objeto de canalización.
Para utilizar la $querySettings etapa, primero debe agregar índices y a la querySettings colección.
El siguiente código inserta dos índices en la colección movies:
const year = collection.createIndex({ year: 1 }); const title = collection.createIndex({ title: 1 });
El siguiente código agrega la configuración de la query a la colección 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);
El siguiente ejemplo crea una etapa de pipeline que devuelve la configuración de queries previamente agregada para la colección movies. El ejemplo establece la opción showDebugQueryShape en true para incluir el documento debugQueryShape en la salida. Luego, el ejemplo ejecuta la pipeline de agregación:
const pipeline = [ { $querySettings: {showDebugQueryShape: true} } ]; const cursor = adminDb.aggregate(pipeline); return cursor;