3.0版本後推薦使用createindex()來建立索引
如果文件數目較多,建立索引需要消耗一定的時間。如果系統負載較重,且有很多已經存在的文件,不能直接使用這個命令進行直接建立。需要在使用資料庫之前就將索引建立完畢。否則嚴重影響資料庫的效能。**上服務時,對常用的查詢一定要新增相應的索引。由於索引需要在插入資料之後再次構建,所以新增索引會對寫入造成一定的效能影響。但是為了查詢的高效,這點影響是值得的。
_id索引 單鍵索引 多鍵索引 復合索引 過期索引 全文索引 地理位置索引
_id索引
_id索引是絕大多數集合預設建立的索引。 對於每個插入的資料,mongodb都會自動生成一條唯一的_id欄位。
單鍵索引
單鍵索引是最普通的索引 與_id索引不同,單鍵索引不會自動建立。
多鍵索引
多鍵索引與單鍵索引建立形式相同,區別在於欄位的值。
單鍵索引:值為乙個單一的值,例如字串,數字或者日期。 多鍵索引:值具有多個記錄,例如陣列。
復合索引
當我們的查詢條件不只有乙個時,就需要建立復合索引。
過期索引
過期索引:是在一段時間後會過期的索引。 在索引過期後,相應的資料會被刪除。 這適合儲存一些在一段時間之後會失效的資料比如使用者的登入資訊、儲存的日誌。
db.collection.ensureindex(,)儲存在過期索引欄位的值必須是指定的時間型別。
說明:必須是isodate或者isodate陣列,不能使用時間戳,否則不能被自動刪除。 如果指定了isodate陣列,則按照最小的時間進行刪除。 過期索引不能是復合索引。 刪除時間不是精確的。
說明:刪除過程是由後台程式每60s跑一次,而且刪除也需要一些時間,所以存在誤差。
全文索引
全文索引:對字串與字串陣列建立全文可搜尋的索引。
適用情況:
建立方法(乙個資料集合中只允許建立乙個全文索引):
db.articles,ensureindex()
db.articles,ensureindex()
db.articles,ensureindex()
db.articles.ensureindex()如何使用全文索引查詢
db.articles.find(})
db.articles.find(}) // 或
db.articles.find(}) //不包含cc
db.articles.find(}) // 與全文索引相似度
$meta操作符:}
寫在查詢條件後面可以返回結果的相似度。
與sort一起使用,可以達到很好的實用效果。
db.articles.find(},}).sort(})全文索引非常強大,但是同樣存在限制
每次查詢,只能指定乙個$text查詢 $text查詢不能出現在$nor查詢中 查詢中如果包含了$text,hint不再起作用 很可惜,mongodb全文索引還不支援中文
mongoDB 索引使用
一 索引基礎 mongodb的索引幾乎與傳統的關係型資料庫一模一樣,這其中也包括一些基本的優化技巧。下面是建立索引的命令 db.test.ensureindex 可以通過下面的名稱檢視索引是否已經成功建立 db.test.getindexes 刪除索引的命令是 db.test.dropindex 在...
MongoDB學習 索引
一 索引基礎 mongodb的索引幾乎與傳統的關係型資料庫一模一樣,這其中也包括一些基本的優化技巧。下面是建立索引的命令 db.test.ensureindex 可以通過下面的名稱檢視索引是否已經成功建立 db.test.getindexes 刪除索引的命令是 db.test.dropindex 在...
MongoDB索引使用
索引簡介 mongodb同傳統資料庫索引一樣,同樣使用的是b tree索引,絕大多數優化mysql oracle sqllite索引技術也同樣適用於mongodb.建立索引使用ensureindex方法 建立普通索引 db.users1.find 在username欄位上建立正序索引 db.user...