listIndexes
定义
listIndexes
返回有关指定集合上索引的信息。返回的索引信息包括用于创建索引的键和选项,以及隐藏的索引。您可以可选地设置第一批结果的批大小。
提示
在
mongosh
中,此命令也可以通过db.collection.getIndexes()
辅助方法运行.辅助方法对
mongosh
用户来说很方便,但它们可能不会返回与数据库命令相同级别的信息。在不需要便利性或需要额外的返回字段的情况下,请使用数据库命令。
兼容性
此命令可在以下环境中的部署中使用
MongoDB Atlas:云中MongoDB部署的全托管服务
注意
此命令在所有MongoDB Atlas集群中受支持。有关Atlas对所有命令的支持信息,请参阅不受支持的命令。
MongoDB Enterprise:基于订阅、自我管理的MongoDB版本
MongoDB Community:源代码可用的、免费使用且可自我管理的MongoDB版本
语法
该命令有以下语法
db.runCommand ( { listIndexes: "<collection-name>", cursor: { batchSize: <int> }, comment: <any> } )
命令字段
命令包含以下字段
字段 | 类型 | 描述 |
---|---|---|
listIndexes | 字符串 | 集合名称。 |
cursor.batchSize | 整数 | 可选。指定游标批量大小。 |
注释 | 任何类型 | 可选。用户提供的注释,用于附加到该命令。一旦设置,此注释将出现在以下位置的该命令记录旁边
注释可以是任何有效的 BSON 类型(字符串、整数、对象、数组等)。 在 |
必需的访问权限
如果启用了访问控制,内置的 read
角色提供了运行数据库中集合的 listIndexes
所需的权限。
行为
Atlas 搜索索引
listIndexes
不返回有关 Atlas 搜索索引 的信息。相反,请使用 $listSearchIndexes
。
客户端断开连接
从 MongoDB 4.2 版本开始,如果发出 listIndexes
的客户端在操作完成前断开连接,MongoDB 会使用 killOp
将 listIndexes
标记为终止。
副本集成员状态限制
要在副本集成员上运行,listIndexes
操作需要该成员处于PRIMARY
或SECONDARY
状态。如果成员处于其他状态,例如STARTUP2
,则操作会出错。
通配符索引
从MongoDB 6.3、6.0.5和5.0.16版本开始,wildcardProjection
字段以提交的格式存储索引投影。早期版本的服务器可能会以规范化的形式存储投影。
服务器使用索引的方式相同,但您可能会在listIndexes
和db.collection.getIndexes()
命令的输出中注意到差异。
输出
listIndexes.cursor
根据您光标指定的批次大小返回的结果集。每个批次输出的文档包含以下字段
字段类型描述id整数一个64位整数。如果为零,则没有更多的信息批次。如果非零,则为光标ID,可在getMore
命令中使用以获取下一批次索引信息。ns字符串以下格式的数据库和集合名称:<database-name>.<collection-name>
firstBatchdocument索引信息包括用于创建索引的键和选项。如果值为true,则隐藏的索引选项才存在。
使用
getMore
根据需要检索更多结果。
示例
列出数据库索引
此示例列出没有指定光标批次大小的contacts
集合的索引。
1 db.runCommand ( 2 { 3 listIndexes: "contacts" 4 } 5 )
1 { 2 cursor: { 3 id: Long("0"), 4 ns: 'test.contacts', 5 firstBatch: [ 6 { v: 2, key: { _id: 1 }, name: '_id_', ns: 'test.contacts' }, 7 { v: 2, key: { a: 1 }, name: 'a_1', ns: 'test.contacts' } 8 ] 9 }, 10 ok: 1 11 }
指定结果批大小
此示例列出联系人
集合的索引,并指定游标批大小为1。
1 db.runCommand ( 2 { 3 listIndexes: "contacts", cursor: { batchSize: 1 } 4 } 5 )
1 { 2 cursor: { 3 id: Long("4809221676960028307"), 4 ns: 'test.contacts', 5 firstBatch: [ { v: 2, key: { _id: 1 }, name: '_id_', ns: 'test.contacts' } ] 6 }, 7 ok: 1 8 }
检索更多结果
此示例使用getMore
从联系人
集合检索更多结果批。
1 db.runCommand( 2 { 3 getMore: Long("4809221676960028307"), collection: "contacts" 4 } 5 )
1 { 2 cursor: { 3 nextBatch: [ { v: 2, key: { a: 1 }, name: 'a_1', ns: 'test.contacts' } ], 4 id: Long("0"), 5 ns: 'test.contacts' 6 }, 7 ok: 1 8 }