Docs 菜单

Docs 主页开发应用程序MongoDB Manual

listIndexes

在此页面上

  • 定义
  • 兼容性
  • 语法
  • 命令字段
  • 必需的访问权限
  • 行为
  • 输出
  • 举例
listIndexes

返回指定集合的索引信息。返回的索引信息包括用于创建索引的键和选项,以及隐藏索引。您可以选择设置第一批结果的批量大小。

提示

mongosh中,该命令也可以通过db.collection.getIndexes()辅助方法运行。

助手方法对于mongosh用户来说很方便,但它们返回的信息级别可能与数据库命令不同。如果不追求方便或需要额外的返回字段,请使用数据库命令。

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

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

注意

所有 MongoDB Atlas 集群都支持此命令。有关所有命令的信息,请参阅不支持的命令。

该命令具有以下语法:

db.runCommand (
{
listIndexes: "<collection-name>",
cursor: { batchSize: <int> },
comment: <any>
}
)

该命令接受以下字段:

字段
类型
说明
listIndexes
字符串
集合的名称。
cursor.batchSize
整型
可选。指定游标批处理大小。
comment
注意到

可选。用户提供的待附加到该命令的注释。设置后,该注释将与该命令的记录一起出现在以下位置:

注释可以是任何有效的 BSON 类型(字符串、整型、对象、数组等)。

注意

listIndexes命令上设置的任何注释都会由在listIndexes游标上运行的任何后续getMore命令继承。

如果实施了访问控制,则内置read角色将提供对数据库中的集合运行listIndexes所需的特权。

listIndexes 不返回有关Atlas Search 索引的信息。请改用$listSearchIndexes

从 MongoDB4 开始。2 ,如果发出 的客户端在操作完成之前断开连接,MongoDBlistIndexes 会使用listIndexes killOp将 标记为终止。

要在副本集成员上运行, listIndexes操作要求该成员处于PRIMARYSECONDARY状态。如果节点处于其他状态,例如STARTUP2 ,则操作错误。

从 MongoDB 6.3、6.0.5 和 5.0.16 开始,wildcardProjection 字段以其提交的形式存储索引投影。早期版本的服务器可能已将投影以标准化形式存储。

服务器以相同的方式使用索引,但您可能会注意到listIndexesdb.collection.getIndexes()命令的输出有所不同。

listIndexes.cursor

中游标指定的批处理大小返回结果集。批处理输出中的每个文档都包含以下字段:

字段
类型
说明
id
整型
:64位整型。如果为零,则不再有批量信息。如果非零,则为游标 ID,可在 getMore 命令中使用以获取下一批索引信息。
ns
字符串
数据库和集合名称采用以下格式: <database-name>.<collection-name>
firstBatch
文档

索引信息包括用于创建索引的键和选项。仅当值为 true 时,隐藏的索引选项才存在。

根据需要使用 getMore 检索其他结果。

listIndexes.ok

命令的返回值。值为 1 表示成功。

此示例列出 contacts 集合的索引,但未指定游标批处理大小。

1db.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}

此示例列出 contacts 集合的索引,并指定游标批处理大小为 1。

1db.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}

此示例使用 getMorecontacts 集合中检索更多结果批次。

1db.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}
← listDatabases