Docs 菜单

Docs 主页开发应用程序MongoDB Manual

dropIndexes

在此页面上

  • 定义
  • 语法
  • 命令字段
  • 行为
  • 举例
dropIndexes

在 6.0 版本中进行了更改

dropIndexes命令从指定集合中删除一个或多个索引( _id字段上的索引和最后剩余的分片键索引(如果存在)除外)。

提示

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

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

该命令具有以下语法:

db.runCommand(
{
dropIndexes: <string>,
index: <string|document|arrayofstrings>,
writeConcern: <document>, comment: <any>
}
)

该命令接受以下字段:

字段
类型
说明
dropIndexes
字符串
要删除索引的集合名称。
索引(index)
字符串或文档或字符串数组

要删除的一个或多个索引。

  • 要从集合中删除除 _id 索引和最后剩下的分片键索引(如果存在)之外的所有索引,请指定 "*"

  • 要删除单个索引,请指定索引名称、索引规范文档(除非该索引是文本索引)或索引名称的数组。要删除文本索引,请指定索引名称,而不是索引规范文档。如果此索引是最后剩下的分片键索引,则 dropIndexes 会引发错误。

  • 要删除多个索引,请指定索引名称的数组。

writeConcern
文档
可选。 表达 命令 写关注(write concern) drop的文档。省略以使用默认的写关注(write concern)。
comment
注意到

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

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

从 MongoDB 6开始。如果您尝试使用0和dropIndexes删除最后一个剩余的分片键兼容索引,则会引发错误。将"*"传递给dropIndexes会删除除_id索引和最后剩下的分片键兼容索引(如果存在)之外的所有索引。

从 MongoDB 5开始。 2 ,即使正在构建另一个索引,也可以使用dropIndexes删除同一集合上的现有索引。在早期版本中,在进行中的索引构建期间尝试删除其他索引会导致BackgroundOperationInProgressForNamespace错误。

dropIndexes操作仅终止正在使用被删除索引的查询。这可能包括在查询规划中考虑索引的查询。

dropIndexes在操作期间获得指定集合的独占锁。对集合的所有后续操作都必须等到dropIndexes释放该锁。

如果该方法传递给包含不存在索引的索引名称数组,则该方法会出错,但不会删除任何指定索引。

不能删除 _id 字段上的默认索引。

要删除文本索引,请指定索引名称而不是索引规范文档。

如果为dropIndexes指定的索引仍在构建中, dropIndexes会尝试停止正在进行的构建。停止索引构建与删除构建的索引具有相同的效果。

对于副本集,请在dropIndexes 节点上运行 。主节点停止索引构建并创建关联的“abortIndexBuild” oplog 条目。复制“abortIndexBuild”oplog 条目的从节点会停止正在进行的索引构建并放弃构建作业。有关 索引构建过程 的详细文档,请参阅索引构建过程。

使用 currentOp 确定与 createIndexesdb.collection.createIndexes() 操作相关的索引构建。有关示例,请参阅主动索引操作

MongoDB 提供对查询规划器隐藏或取消隐藏索引的功能。通过向规划器隐藏索引,您可以在不实际删除索引的情况下评估删除索引的潜在影响。

如果在评估后,用户决定删除索引,则可以删除隐藏索引;也就是说,您无需先取消隐藏即可删除它。

如有不利影响,用户可以取消隐藏索引,而不必重新创建已删除的索引。由于索引在隐藏期间得到完全维护,因此一旦取消隐藏,索引就立即可用。

有关隐藏索引的更多信息,请参阅隐藏索引

  • 要删除所有非_id 索引,请为"*" 指定index

    db.runCommand( { dropIndexes: "collection", index: "*" } )
  • 要删除单个索引,请通过指定要删除的索引的名称来发出命令。例如,要删除名为 age_1 的索引,请使用以下命令:

    db.runCommand( { dropIndexes: "collection", index: "age_1" })

    mongosh提供了辅助方法db.collection.dropIndex()db.collection.dropIndexes()

    db.collection.dropIndex("age_1");
  • 要删除多个索引,请通过指定索引名称数组来发出命令:

    db.runCommand( { dropIndexes: "collection", index: [ "age_1", "age_1_status_1" ] } )

提示

另请参阅:

← dropConnections
filemd5 →