Mongodb 是基於集合建立索引 (Index),索引的作用類似於傳統關係型資料庫,目的是為了提高查詢速度 。 如果沒有建立索引, Mongodb 在讀取數據時必須掃描集合中的 所有文檔記錄。 這種全集合掃描效率是非常低的,尤其在處理大數據時,查詢可能需要花費幾十秒到幾分鐘的時間,這對基於互聯網應 ...
Mongodb 是基於集合建立索引 (Index),索引的作用類似於傳統關係型資料庫,目的是為了提高查詢速度 。 如果沒有建立索引, Mongodb 在讀取數據時必須掃描集合中的 所有文檔記錄。 這種全集合掃描效率是非常低的,尤其在處理大數據時,查詢可能需要花費幾十秒到幾分鐘的時間,這對基於互聯網應用的網站來說是無法容忍的。 當集合建立索引後,查詢將掃描索引內容,而不會去掃描對應的集合。 但在建立索引的同時,是需要增加額外存儲開銷的;在已經建立索引的情況下,若新 插入了集合文檔記錄,則會引起索引重排序,這個過程會影響查詢速度。 Mongodb 的索 引基於 B-tree 數據結構及對應演算法形成。 預設情況下,在建立集合的同時, MongoDB 資料庫自動為集合_id 建立唯一索引,可 以避免重覆插入同一 _id 值的文檔記錄。
創建單一欄位索引:
db.student.createIndex({age:1}) age為欄位名 1 為升序 -1為降序。
創建欄位值唯一索引:
db.student.createIndex({name:"text"},{unique:true}) 單欄位值的唯一索引,text為文本索引
db.student.createIndex({name:"text",age:1},{unique:true}) 多欄位值的唯一索引
創建哈希索引:
db.student.createIndex({_id:"hashed"})
查詢集合上的索引:
db.student.getIndexes()
刪除集合的所有索引:
db.student.dropIndexes()
刪除集合的指定索引:
db.student.dropIndex(index)
重建集合的所有索引:
db.student.reIndex()
查詢集合的索引大小:
db.student.totalIndexSize()