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

$querySettings(聚合阶段)

$querySettings

8.0版本新增。

返回之前使用 setQuerySettings 添加的查询设置。这些设置将应用于整个集群。在关闭之后,集群将保留这些设置。

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

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

重要

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

如果使用多个管道阶段,请首先将 $querySettings 放在管道中。

db.aggregate( [ { $querySettings: { showDebugQueryShape: <boolean> } }, // Add any additional pipeline stages after $querySettings ...] )

$querySettings 采用此字段:

字段
类型
必要性
说明

showDebugQueryShape

布尔

Optional

如果为 true,$querySettings 将返回查询结构输出的调试版本。您将在下一部分中看到一个示例。有关输出的详细信息,请参阅查询结构。

默认值为 false。

以下示例将创建一个集合、添加查询设置并返回设置:

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 } ) // Create ascending index on totalNumber fielddb.pizzaOrders.createIndex( { totalNumber: 1 } )

索引的默认名称为 orderDate_1 和 totalNumber_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" }} )

comment字段从MongoDB 8.0.4 开始可用。

3

如下示例使用聚合管道中的 $querySettings 阶段返回查询设置:

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

由于 showDebugQueryShape 为 true,因此输出中包含 debugQueryShape 文档。可以使用 queryShapeHash 标识符查找查询设置。此输出中突出显示了 queryShapeHash 和 debugQueryShape:

[ { queryShapeHash: 'AB8ECADEE8F0EB0F447A30744EB4813AE7E0BFEF523B0870CA10FCBC87F5D8F1', 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('2023-01-20T00:00:00.000Z') } }, sort: { totalNumber: 1 }, '$db': 'test' }, debugQueryShape: { cmdNs: { db: 'test', coll: 'pizzaOrders' }, command: 'find', filter: { orderDate: { '$gt': '?date' } }, sort: { totalNumber: 1 } } }]