<rt id="wq202"><optgroup id="wq202"></optgroup></rt>
<rt id="wq202"><small id="wq202"></small></rt>
<rt id="wq202"><small id="wq202"></small></rt>
新聞動態
新聞動態
NEWS INFORMATION

MongoDB索引的用法介紹

發布日期:2022-07-15 19:52 | 文章來源:源碼之家

索引通常能夠極大的提高查詢的效率,如果沒有索引,MongoDB在讀取數據時必須掃描集合中的每個文件并選取那些符合查詢條件的記錄。

這種掃描全集合的查詢效率是非常低的,特別在處理大量的數據時,查詢可以要花費幾十秒甚至幾分鐘,這對網站的性能是非常致命的。

索引是特殊的數據結構,索引存儲在一個易于遍歷讀取的數據集合中,索引是對數據庫表中一列或多列的值進行排序的一種結構

一、索引

1、createIndex() 方法

MongoDB使用 createIndex() 方法來創建索引。

注意在 3.0.0 版本前創建索引方法為 db.collection.ensureIndex(),之后的版本使用了 db.collection.createIndex() 方法,ensureIndex() 還能用,但只是 createIndex() 的別名。

語法

createIndex()方法基本語法格式如下所示:

db.collection.createIndex(keys, options)

語法中 Key 值為你要創建的索引字段,1 為指定按升序創建索引,如果你想按降序來創建索引指定為 -1 即可。

實例

db.col.createIndex({"title":1})

createIndex() 方法中你也可以設置使用多個字段創建索引(關系型數據庫中稱作復合索引)。

db.col.createIndex({"title":1,"description":-1})

createIndex() 接收可選參數,可選參數列表如下:

在后臺創建索引:

db.values.createIndex({open: 1, close: 1}, {background: true})

通過在創建索引時加 background:true 的選項,讓創建工作在后臺執行

2、其他

1、查看集合索引

db.col.getIndexes()

2、查看集合索引大小

db.col.totalIndexSize()

3、刪除集合所有索引

db.col.dropIndexes()

4、刪除集合指定索引

db.col.dropIndex("索引名稱")

二、全文索引

1、創建全文索引

考慮以下 posts 集合的文檔數據,包含了文章內容(post_text)及標簽(tags):

{
   "post_text": "enjoy the mongodb articles on Runoob",
   "tags": [
      "mongodb",
      "runoob"
   ]
}

我們可以對 post_text 字段建立全文索引,這樣我們可以搜索文章內的內容:

db.posts.ensureIndex({post_text:"text"})

2、使用全文索引

現在我們已經對 post_text 建立了全文索引,我們可以搜索文章中的關鍵詞 runoob:

db.posts.find({$text:{$search:"runoob"}})

以下命令返回了如下包含 runoob 關鍵詞的文檔數據:

{ 
   "_id" : ObjectId("53493d14d852429c10000002"), 
   "post_text" : "enjoy the mongodb articles on Runoob", 
   "tags" : [ "mongodb", "runoob" ]
}

使用全文索引可以提高搜索效率。

3、刪除全文索引

刪除已存在的全文索引,可以使用 find 命令查找索引名:

db.posts.getIndexes()

通過以上命令獲取索引名,本例的索引名為post_text_text,執行以下命令來刪除索引:

db.posts.dropIndex("post_text_text")

到此這篇關于MongoDB索引的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支持本站。

香港服務器租用

版權聲明:本站文章來源標注為YINGSOO的內容版權均為本站所有,歡迎引用、轉載,請保持原文完整并注明來源及原文鏈接。禁止復制或仿造本網站,禁止在非www.333abb.com所屬的服務器上建立鏡像,否則將依法追究法律責任。本站部分內容來源于網友推薦、互聯網收集整理而來,僅供學習參考,不代表本站立場,如有內容涉嫌侵權,請聯系alex-e#qq.com處理。

實時開通

自選配置、實時開通

免備案

全球線路精選!

全天候客戶服務

7x24全年不間斷在線

專屬顧問服務

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務熱線

關注
微信

關注官方微信
頂部