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

removeQuerySettings(数据库命令)

removeQuerySettings

8.0版本新增。

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

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

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

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

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

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

  • MongoDB Atlas:用于云中 MongoDB 部署的完全托管服务

重要

M0 和 Flex 集群不支持此命令。有关更多信息,请参阅不支持的命令。

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

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