索引是提高查詢查詢效率最有效手段。索引是一種特殊的資料結構,索引以易於遍曆的形式儲存了資料的部分內容(如:一個特定的欄位或一組欄位值),索引會按一定規則對儲存值進行排序,而且索引的儲存位置在記憶體中,所在從索引中檢索資料會非常快。如果沒有索引,MongoDB必須掃描集合中的每一個文檔,這種掃描的效率非常低,尤其是在資料量較大時。
1.查看索引:
db.COLLECTION_NAME.getIndexes()
[ { "v" : 1, "key" : { "_id" : 1 }, "name" : "_id_", "ns" : "mars.COLLECTION_NAME" }]
2.建立索引:
數字 1 表示按索引升序儲存,-1 表示按索引降序方式儲存
1).建立單索引
db.COLLECTION_NAME.ensureIndex({name:1})
[ { "v" : 1, "key" : { "_id" : 1 }, "name" : "_id_", "ns" : "mars.COLLECTION_NAME" }, { "v" : 1, "key" : { "name" : 1 }, "name" : "name_1", "ns" : "mars.COLLECTION_NAME" }]
2).建立複合索引
db.COLLECTION_NAME.ensureIndex({name:1,age:1})
[ { "v" : 1, "key" : { "_id" : 1 }, "name" : "_id_", "ns" : "mars.COLLECTION_NAME" }, { "v" : 1, "key" : { "name" : 1 }, "name" : "name_1", "ns" : "mars.COLLECTION_NAME" }, { "v" : 1, "key" : { "name" : 1, "age" : 1 }, "name" : "name_1_age_1", "ns" : "mars.COLLECTION_NAME" }]
3).建立唯一索引:
db.COLLECTION_NAME.ensureIndex({name:1,age:1},{unique:true})
[ { "v" : 1, "key" : { "_id" : 1 }, "name" : "_id_", "ns" : "mars.COLLECTION_NAME" }, { "v" : 1, "unique" : true, "key" : { "name" : 1, "age" : 1 }, "name" : "name_1_age_1", "ns" : "mars.COLLECTION_NAME" }]
3.刪除索引:
1).根據索引的 name 欄位名稱刪除,比如如上顯示刪除第二個索引
db.COLLECTION_NAME.dropIndex("name_1_age_1_unique_true")
2).根據建立時指定的索引的 key 刪除,比如如上顯示刪除第二個索引
db.COLLECTION_NAME.dropIndex({name:1,age:1})
3).刪除所有索引
db.COLLECTION_NAME.dropIndexes()