MongoDB 是一個 NoSQL 文檔類型數據庫。默認情況下,_id 字段是任何集合中的索引。此索引值唯一標識集合中的文檔。此外,我們可以根據我們的要求創建索引,以加快檢索速度並提高 MongoDB 操作的性能。同時,索引過多也是一種開銷,導致性能不佳。在那些時候,我們需要刪除不需要的索引。所以,MongoDB 提供了 dropIndexes() 方法。此方法從給定的集合中刪除指定的索引或所有索引(_id 字段除外)。
用法:
刪除所有索引:
db.collectionName.dropIndexes()
刪除指定的索引:
db.collectionName.dropIndexes(<index>)
這裏,索引參數是一個可選參數。它指定要刪除的索引/索引。
注意:您可以使用 db.collectionName.createIndex() 方法創建索引,並使用 db.collectionName.getIndexes() 方法查看索引。
要點:
- 從 MongoDB 4.2 開始,要指定要刪除的多個索引,我們可以使用以下語法:
db.<collection>.dropIndexes( [ “a_1_b_1”, “a_1”, “a_1__id_-1” ] )
在指定索引名稱時,我們需要明確給出正確的索引名稱,如果提供的索引不可用(即使是一個),則不會刪除指定的索引。
- 從 MongoDB 4.4 版開始,我們也可以使用以下命令刪除索引:
db.runCommand( { dropIndexes:“collectionName”, index:“<indexname1>, <indexname2>” } )
- 從 MongoDB 4.2 開始,此方法隻會終止那些使用正在刪除的索引的查詢。每當此命令發出時都會建立一個鎖,所有操作都必須等到此 dropIndexes() 方法調用結束。
- 對於刪除文本索引,我們應該隻使用索引的名稱。
例子:
在以下示例中,我們正在使用:
Database: ndtvnews
Collection: articles
刪除 _id 索引:
在這個例子中,我們試圖刪除 _id 索引:
在上圖中,我們可以看到 _id 和 name 顯示為索引。在 Mongodb 中,默認索引是 _id。它不能被丟棄。即使我們嘗試丟棄,我們也會得到如下結果:
db.articles.dropIndexes({id:1})
我們有另一個名為 “name” 的索引字段。現在這是一個用戶定義的索引,因此我們可以使用 dropIndexes() 方法刪除該索引。
db.articles.dropIndexes({name:1})
此處,name:1 表示名稱是字段名稱並按升序提供。
刪除多個索引:
存在超過 1 個索引的可能性。我們可以通過 dropIndexes() 方法輕鬆刪除它們。這將刪除集合中除 _id 之外的所有索引,因為它是默認索引。假設我們在文章集合中有多個索引。
上圖中“_id”索引為默認索引,另外兩個為用戶自定義索引。因此,我們將使用 dropIndexes() 方法刪除它們。
db.articles.dropIndexes()
在這裏,dropIndexes() 方法刪除給定集合中存在的所有索引(除了 _id)。
刪除指定的索引:
我們已經知道一個集合可以包含多個索引。因此,我們將使用 dropIndexes() 方法刪除指定的索引。假設我們在文章集合中有多個索引。
db.articles.dropIndexes("name_1")
在這裏,我們使用索引名稱刪除索引,即 name_1。
相關用法
- MongoDB Update()用法及代碼示例
- MongoDB skip()用法及代碼示例
- MongoDB limit()用法及代碼示例
- MongoDB Distinct()用法及代碼示例
- MongoDB getIndexes()用法及代碼示例
- MongoDB countDocuments()用法及代碼示例
- MongoDB FindOne()用法及代碼示例
- MongoDB sort()用法及代碼示例
- MongoDB FindAndModify()用法及代碼示例
- MongoDB findOneAndDelete()用法及代碼示例
- MongoDB dropIndex()用法及代碼示例
- MongoDB copyTo()用法及代碼示例
注:本文由純淨天空篩選整理自priyarajtt大神的英文原創作品 MongoDB – dropIndexes() Method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。