Definición
Nuevo en la versión 8.0.
Elimina la configuración de query agregada anteriormente con
setQuerySettings.
Para borrar la configuración de query, debes proporcionar un hash string de forma del query o una forma del query para removeQuerySettings.
Para encontrar una hash string o una forma del query, puedes utilizar una etapa $querySettings en una pipeline de agregación. La cadena string se denomina queryShapeHash en la salida $querySettings.
Si proporciona una forma del query a removeQuerySettings, incluye los campos para borrar la forma de ajustes del query existente. Los valores de los campos no tienen que coincidir. Por ejemplo, si tienes configuraciones de consultas existentes para find x=1 y proporcionas find x=100 a removeQuerySettings, removeQuerySettings borra las configuraciones de consultas para find x=1.
Para obtener más información sobre las formas de consulta, consulte Formas de consulta.
Sintaxis
Puede borrar la configuración de la query utilizando cualquiera de las siguientes especificaciones de sintaxis.
Proporcionar una cadena hash de forma de consulta
En la siguiente sintaxis, proporciona una cadena hash de forma de consulta en removeQuerySettings:
db.adminCommand( { removeQuerySettings: <string> // Provide an existing query shape hash string } )
Proporcionar una forma del query
En la siguiente sintaxis, usted proporciona:
Los mismos campos que un comando
find,distinctoaggregate. Consulta las secciones de sintaxis en las páginas de esos comandos para ver los campos que puedes incluir enremoveQuerySettings.Un campo
$dbque especifica el nombre de la base de datos asociado al comando original.
db.adminCommand( { removeQuerySettings: { <fields>, // Provide fields for // find, distinct, or aggregate command $db: <string> // Provide a database name } } )
Campos de comandos
El comando toma este campo:
Campo | Tipo | Necesidad | Descripción |
|---|---|---|---|
| Documento o string | Requerido |
Ejemplos
Los siguientes ejemplos crean una colección, agregan configuraciones de consulta y eliminan las configuraciones:
Crear la colección y el índice de ejemplo
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 } )
El índice tiene el nombre predeterminado orderDate_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" } } )
Devolver la configuración de la consulta
El siguiente ejemplo utiliza $querySettings para devolver la configuración de la query:
db.aggregate( [ { $querySettings: {} } ] )
Para localizar la configuración de consulta que desea eliminar, utilice la cadena queryShapeHash en esta salida:
[ { queryShapeHash: 'F42757F1AEB68B4C5A6DE6182B29B01947C829C926BCC01226BDA4DDE799766C', 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('2024-01-20T00:00:00.000Z') } }, sort: { totalNumber: 1 }, '$db': 'test' } } ]
Eliminar la configuración de la consulta
El siguiente ejemplo usa removeQuerySettings para borrar la configuración de la query identificada usando queryShapeHash de la salida anterior:
db.adminCommand( { removeQuerySettings: "F42757F1AEB68B4C5A6DE6182B29B01947C829C926BCC01226BDA4DDE799766C" } )
También puedes eliminar la configuración de query usando una forma del query. Por ejemplo:
db.adminCommand( { removeQuerySettings: { find: "pizzaOrders", filter: { orderDate: { $gt: ISODate( "2023-01-20T00:00:00Z" ) } }, sort: { totalNumber: 1 }, $db: "test" } } )