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}) 多字段值的惟一索引 spa
建立哈希索引:排序
db.student.createIndex({_id:"hashed"})索引
查詢集合上的索引:文檔
db.student.getIndexes()get
刪除集合的全部索引:
db.student.dropIndexes()
刪除集合的指定索引:
db.student.dropIndex(index)
重建集合的全部索引:
db.student.reIndex()
查詢集合的索引大小:
db.student.totalIndexSize()