1. 程式人生 > >Mongo基礎 索引的使用

Mongo基礎 索引的使用

exsi 定義 class 空間索引 毫秒 ext rop clas 應用

MongoDB中的索引和其他數據庫索引類似,也是使用B-Tree結構。mongodb的索引是在collection級別上的,並且支持在任何列或者集合內的文檔的子列中創建索引。

所有的MongoDB集合默認都有一個唯一索引在字段“_id”上,如果應用程序沒有為 “_id”列定義一個值,MongoDB將創建一個帶有ObjectId值的列。(ObjectId是基於 時間、計算機ID、進程ID、本地進程計數器 生成的)

MongoDB 同樣支持在一列或多列上創建升序或降序索引。

MongoDB還可以創建 多鍵索引、數組索引、空間索引、text索引、哈希索引,其屬性可以是唯一性索引、稀疏性索引、TTL(time to live

)索引。

索引的限制:

索引名稱不能超過128個字符

每個集合不能超過64個索引

復合索引不能超過31列

基本命令:

>db.tab.ensureIndex({"name":1},{"name":"IX_name"},{"unique":true}) //創建索引名字叫IX_name的唯一索引

>db.tab.getIndexes() //查看所有索引

>db.tab.dropIndexes() //刪除所有索引

>db.tab.find({"name":"test"}).explain("executionStats") //執行結果分析 關註輸出的如下數值:explain.executionStats.executionTimeMillis 耗時毫秒
>db.tab.find({"name":"test"}).hint({"name":1}).explain("executionStats") //執行結果分析 索引提示,強制使用索引

其他常用命令:

db.tab.ensureIndex({"id":1})     //創建單列索引
db.collection.createIndex( { "filed": sort } )    //filed :為鍵列
db.collection.createIndex( { "filed": sort , "filed2": sort } )    //sort :為排序。1 為升序;-1為降序。
db.system.indexes.find() //查看索引 db.tab.totalIndexSize(); //查看索引大小 db.tab.reIndex() //重建索引 db.runCommand({reIndex:"tab"}) db.tab.dropIndex(<indexname>) //刪除索引 db.tab.dropIndex("id_1") //<indexname>為getIndexes看到的索引名稱 db.tab.dropIndexes() //刪除所有索引(註意!)

參考資料:http://www.runoob.com/mongodb/mongodb-indexing.html

Mongo基礎 索引的使用