removeQuerySettings
定义
新版本8.0.
删除之前使用setQuerySettings
.
删除查询设置,您必须提供查询形状哈希字符串或查询形状到removeQuerySettings
。
要查找哈希字符串或查询形状,您可以在聚合管道中使用$querySettings
阶段。哈希字符串在$querySettings
输出中命名为queryShapeHash
。
如果您向removeQuerySettings
提供查询形状,请包含要删除的现有查询设置形状的字段。字段值不必匹配。例如,如果您为find x=1
设置了现有查询设置,并向removeQuerySettings
提供了find x=100
,则removeQuerySettings
将删除对find x=1
的查询设置。
有关查询形状的更多信息,请参阅查询形状。
语法
您可以使用以下任一语法规范来删除查询设置。
提供查询形状哈希字符串
在以下语法中,您需要在 removeQuerySettings
中提供查询形状哈希字符串
db.adminCommand( { removeQuerySettings: <string> // Provide an existing query shape hash string } )
提供查询形状
在以下语法中,您需要提供
与
find
、distinct
或aggregate
命令相同的字段。有关可包含在removeQuerySettings
中的字段,请参阅相应命令的语法部分。指定与原始命令关联的数据库名称的
$db
字段。
db.adminCommand( { removeQuerySettings: { <fields>, // Provide fields for // find, distinct, or aggregate command $db: <string> // Provide a database name } } )
命令字段
命令使用此字段
示例
以下示例创建一个集合,添加查询设置,并删除设置
创建示例集合和索引
运行
// 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 } )
索引的默认名称为 orderDate_1
。
添加查询设置
以下 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" } } )
返回查询设置
以下示例使用 $querySettings
返回查询设置
db.aggregate( [ { $querySettings: {} } ] )
要定位要删除的查询设置,请使用此输出中的 queryShapeHash
字符串
[ { 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' } } ]
删除查询设置
以下示例使用 removeQuerySettings
通过 queryShapeHash
从之前输出中标识的查询设置来删除查询设置
db.adminCommand( { removeQuerySettings: "F42757F1AEB68B4C5A6DE6182B29B01947C829C926BCC01226BDA4DDE799766C" } )
您还可以使用查询形状来删除查询设置。例如
db.adminCommand( { removeQuerySettings: { find: "pizzaOrders", filter: { orderDate: { $gt: ISODate( "2023-01-20T00:00:00Z" ) } }, sort: { totalNumber: 1 }, $db: "test" } } )