Computer >> Máy Tính >  >> Lập trình >> MongoDB

Bỏ tất cả các chỉ mục từ tất cả các bộ sưu tập trong cơ sở dữ liệu MongoDB bằng cách sử dụng dòng lệnh?

Sau đây là cú pháp để loại bỏ tất cả các chỉ mục từ tất cả các bộ sưu tập trong cơ sở dữ liệu MongoDB bằng cách sử dụng dòng lệnh

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

Cú pháp trên sẽ loại bỏ tất cả các chỉ mục ngoại trừ _id.

Hãy để chúng tôi kiểm tra cơ sở dữ liệu hiện tại. Sau đây là truy vấn

> db

Điều này sẽ tạo ra kết quả sau

Test

Sau đây là truy vấn cho phép chúng tôi hiển thị một số chỉ mục từ một bộ sưu tập trước khi loại bỏ các chỉ mục

> db.indexingDemo.getIndexes();

Điều này sẽ tạo ra kết quả sau

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

Sau đây là truy vấn để loại bỏ tất cả các chỉ mục từ tất cả các bộ sưu tập trong cơ sở dữ liệu MongoDB

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

Sau đây là truy vấn để kiểm tra xem các chỉ mục đã bị loại bỏ hay chưa

> db.indexingDemo.getIndexes();

Điều này sẽ tạo ra kết quả sau

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

Nhìn vào kết quả mẫu ở trên, các chỉ mục đã bị loại bỏ thành công.