文档菜单
文档首页
/
MongoDB 手册
/ / /

removeQuerySettings

本页内容

  • 定义
  • 语法
  • 命令字段
  • 示例
  • 了解更多
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
} )

在以下语法中,您需要提供

  • finddistinctaggregate 命令相同的字段。有关可包含在 removeQuerySettings 中的字段,请参阅相应命令的语法部分。

  • 指定与原始命令关联的数据库名称的 $db 字段。

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

命令使用此字段

字段
类型
必要性
描述
removeQuerySettings
文档或字符串
必需

您可以提供

  • finddistinctaggregate命令相同的字段,以及与原始命令关联的数据库的$db字段。

  • 现有查询形状哈希字符串。

以下示例创建一个集合,添加查询设置,并删除设置

1

运行

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

2

以下 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"
}
} )
3

以下示例使用 $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'
}
}
]
4

以下示例使用 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"
}
} )

返回

reIndex