當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


MongoDB dropIndexes()用法及代碼示例

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。

相關用法


注:本文由純淨天空篩選整理自priyarajtt大神的英文原創作品 MongoDB – dropIndexes() Method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。