Docs Menu
Docs Home
/
MongoDB Manual
/ / /

removeQuerySettings

On this page

  • Definition
  • Syntax
  • Command Fields
  • Examples
  • Learn More
removeQuerySettings

New in version 8.0.

Deletes query settings previously added with setQuerySettings.

To delete query settings, you must provide either a query shape hash string or a query shape to removeQuerySettings.

To find a hash string or query shape, you can use a $querySettings stage in an aggregation pipeline. The hash string is named queryShapeHash in the $querySettings output.

If you provide a query shape to removeQuerySettings, include the fields for the existing query settings shape to delete. The field values don't have to match. For example, if you have existing query settings for find x=1 and provide find x=100 to removeQuerySettings, removeQuerySettings deletes the query settings for find x=1.

For more information about query shapes, see Query Shapes.

You can delete query settings using either of the following syntax specifications.

In the following syntax, you provide a query shape hash string in removeQuerySettings:

db.adminCommand( {
removeQuerySettings: <string> // Provide an existing query shape hash string
} )

In the following syntax, you provide:

  • The same fields as a find, distinct, or aggregate command. See the syntax sections on the pages for those commands for the fields you can include in removeQuerySettings.

  • A $db field that specifies the database name associated with the original command.

db.adminCommand( {
removeQuerySettings: {
<fields>, // Provide fields for
// find, distinct, or aggregate command
$db: <string> // Provide a database name
}
} )

The command takes this field:

Field
Type
Necessity
Description
removeQuerySettings
document or string
Required

You can provide either:

  • The same fields as those in a find, distinct, or aggregate command, and a $db field with the database associated with the original command.

  • An existing query shape hash string.

The following examples create a collection, add query settings, and delete the settings:

1

Run:

// 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 } )

The index has the default name orderDate_1.

2

The following setQuerySettings example adds query settings:

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

The following example uses $querySettings to return the query settings:

db.aggregate( [
{ $querySettings: {} }
] )

To locate the query settings to delete, use the queryShapeHash string in this output:

[
{
queryShapeHash: 'F42757F1AEB68B4C5A6DE6182B29B01947C829C926BCC01226BDA4DDE799766C',
settings: {
indexHints: {
ns: { db: 'test', coll: 'pizzaOrders' },
allowedIndexes: [ 'orderDate_1' ]
},
queryFramework: 'classic'
},
representativeQuery: {
find: 'pizzaOrders',
filter: { orderDate: { '$gt': ISODate('2024-01-20T00:00:00.000Z') } },
sort: { totalNumber: 1 },
'$db': 'test'
}
}
]
4

The following example uses removeQuerySettings to delete the query settings identified using queryShapeHash from the previous output:

db.adminCommand( {
removeQuerySettings: "F42757F1AEB68B4C5A6DE6182B29B01947C829C926BCC01226BDA4DDE799766C"
} )

You can also delete query settings using a query shape. For example:

db.adminCommand( {
removeQuerySettings: {
find: "pizzaOrders",
filter: {
orderDate: { $gt: ISODate( "2023-01-20T00:00:00Z" ) }
},
sort: {
totalNumber: 1
},
$db: "test"
}
} )

Back

reIndex