標籤:建立 targe rac sort 組合 key system 查看 mod
1. 簡單介紹
索引是為了加速查詢。
假設沒有索引,mongodb在查詢時會做表掃描,假設集合非常大時。這個查詢會非常慢。一般對建立查詢時的鍵都建立索引。
為排序欄位建立索引。假設對未建立索引的欄位sort,mongodb會將全部的資料取到記憶體中來排序,假設集合大到不能在記憶體中排序,則mongodb會報錯。
2. mongodb建立索引
建立索引使用ensureIndex命令。
> db.people.ensureIndex({"username" : 1});
上面語句對people集合的username鍵做了索引。
3. 複合式索引
對於組合查詢或排序,建立複合式索引。
> db.people.ensureIndex({"date" : -1, "username" : 1});
索引鍵的1或者-1,表示索引建立的順序。1為升序, -1為倒序。
假設索引僅僅有一個鍵,則方向無關緊要。
4. 內嵌文檔建立索引
為blog集合的評論依照時間建立索引:
> db.blog.ensureIndex({"comments.date" : 1});
5. 唯一索引
唯一索引確保集合中的每一個鍵都是唯一值。
> db.people.ensureIndex({"username" : 1}, {"uniqe" : true});
對已有的集合建立唯一索引時。有可能已經有反覆值了,這樣會建立索引失敗。dropDups會保留第一個文檔,刪除後面反覆的值。
> db.people.ensureIndex({"username" : 1}, {"unique" : true, "dropDups" : true});
6. 查看建立的索引
索引放在system.indexes集合中。
> db.system.indexes.find();
能夠查看索引的key, 名稱。屬於哪個集合。
7. 刪除索引
通過索引的名稱。使用dropIndexes能夠刪除索引。
索引名稱通過system.indexes來查詢。
> db.user.dropIndexes({"username_1" : 1});
地址:http://blog.csdn.net/yonggang7/article/details/28100855
Mongodb的索引