如何使用命令行删除 MongoDB 数据库中所有集合的所有索引?

mongodbdatabasebig data analytics更新于 2026/1/19 2:07:17

以下是使用命令行删除 MongoDB 数据库中所有集合的所有索引的语法

db.getCollectionNames().forEach(function(yourVariableName) {
   db.runCommand({dropIndexes: yourVariableName, index: "*"});
});

上述语法将删除除 _id 之外的所有索引。

让我们检查当前数据库。以下是查询

> db

这将产生以下输出 −

Test

以下查询让我们在删除索引之前显示集合中的一些索引

> db.indexingDemo.getIndexes();

这将产生以下输出 −

[
   {
      "v" : 2,
      "key" : {
         "_id" : 1
      },
      "name" : "_id_",
      "ns" : "test.indexingDemo"
   },
   {
      "v" : 2,
      "key" : {
         "StudentFavouriteSubject" : 1
      },
      "name" : "StudentFavouriteSubject_1",
      "ns" : "test.indexingDemo",
      "background" : true
   }
]

以下查询用于删除 MongoDB 数据库中所有集合的所有索引

> db.getCollectionNames().forEach(function(allCollectionName) {
...    db.runCommand({dropIndexes: allCollectionName, index: "*"});
... });

以下查询用于检查索引是否已被删除

> db.indexingDemo.getIndexes();

这将产生以下输出 −

[
   {
      "v" : 2,
      "key" : {
         "_id" : 1
      },
      "name" : "_id_",
      "ns" : "test.indexingDemo"
   }
]

查看上面的示例输出,索引已成功删除。


相关文章