对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

removeQuerySettings(数据库命令)

removeQuerySettings

8.0版本新增。

删除之前使用 setQuerySettings 添加的查询设置。

要删除查询设置,您必须为 removeQuerySettings 提供一个查询结构哈希字符串或查询结构。

要查找哈希字符串或查询结构,您可以在聚合管道中使用 $querySettings 阶段。哈希字符串在 $querySettings 输出中被命名为 queryShapeHash。

如果您向 removeQuerySettings 提供查询结构,请包含要删除的现有查询设置结构的字段。字段值不必匹配。例如,如果您具有 find x=1 的现有查询设置并将 find x=100 提供给 removeQuerySettings,removeQuerySettings 将删除 find x=1 的查询设置。

有关查询结构的更多信息,请参阅查询结构。

此命令可用于以下环境中托管的部署:

  • MongoDB Atlas: The fully managed service for MongoDB deployments in the cloud

重要

This command is not supported in M0 and Flex clusters. For more information, see Unsupported Commands.

可以使用以下任一种语法规范删除查询设置。

在如下语法中,可以在 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
}
} )

该命令使用此字段:

字段
类型
必要性
说明

removeQuerySettings

文档或字符串

必需

可以提供以下任一项:

  • 与 find、distinct 或 aggregate 命令中的字段相同的字段,以及一个包含与原始命令相关联的数据库的 $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",
comment: "Index hint for orderDate_1 index to improve query performance"
}
} )
3

如下示例使用 $querySettings 返回查询设置:

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

要找到要删除的查询设置,请在此输出中使用 queryShapeHash 字符串:

[
{
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'
}
}
]
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"
}
} )