Definición
Nuevo en la versión 8.0.
Elimina las configuraciones de consulta agregadas previamente 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 cadena hash o una forma de consulta, puede usar una $querySettings etapa en una canalización de agregación. La cadena hash se denomina queryShapeHash en la $querySettings salida.
Si proporciona una forma de consulta a removeQuerySettings, incluya los campos de la forma de configuración de consulta existente que desea eliminar. Los valores de los campos no tienen que coincidir. Por ejemplo, si ya tiene una configuración de consulta para find x=1 y proporciona find x=100 a removeQuerySettings, removeQuerySettings elimina la configuración de consulta de find x=1.
Para obtener más información sobre las formas de consulta, consulte Formas de consulta.
Sintaxis
Puede eliminar la configuración de la consulta 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 de consulta
En la siguiente sintaxis, proporciona:
Los mismos campos que un comando, o. Consulte las secciones de sintaxis en las páginas de esos comandos para ver los campos que puede
finddistinctaggregateincluirremoveQuerySettingsen.Un campo
$dbque especifica el nombre de la base de datos asociada con el 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:
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.
Agregar la configuración de la consulta
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 consulta:
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 la consulta mediante una forma de consulta. Por ejemplo:
db.adminCommand( { removeQuerySettings: { find: "pizzaOrders", filter: { orderDate: { $gt: ISODate( "2023-01-20T00:00:00Z" ) } }, sort: { totalNumber: 1 }, $db: "test" } } )