文档菜单
文档首页
/
MongoDB 手册
/ / /

listIndexes

本页内容

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

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

提示

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

辅助方法对mongosh用户来说很方便,但它们可能不会返回与数据库命令相同级别的信息。在不需要便利性或需要额外的返回字段的情况下,请使用数据库命令。

此命令可在以下环境中的部署中使用

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

注意

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

该命令有以下语法

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

命令包含以下字段

字段
类型
描述
listIndexes
字符串
集合名称。
cursor.batchSize
整数
可选。指定游标批量大小。
注释
任何类型

可选。用户提供的注释,用于附加到该命令。一旦设置,此注释将出现在以下位置的该命令记录旁边

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

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

如果启用了访问控制,内置的 read 角色提供了运行数据库中集合的 listIndexes 所需的权限。

listIndexes 不返回有关 Atlas 搜索索引 的信息。相反,请使用 $listSearchIndexes

从 MongoDB 4.2 版本开始,如果发出 listIndexes 的客户端在操作完成前断开连接,MongoDB 会使用 killOplistIndexes 标记为终止。

要在副本集成员上运行,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
document

索引信息包括用于创建索引的键和选项。如果值为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}

此示例列出联系人集合的索引,并指定游标批大小为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}

此示例使用getMore联系人集合检索更多结果批。

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