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


以下是使用命令行从 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"
   }
]

查看以上样本输出,已成功删除索引。

更新时间:2019 年 7 月 30 日

211 次浏览

开启您的 职业生涯

完成课程并获得认证

立即开始
广告