?
基礎索引?
在字段age上創建索引,1(升序);-1(降序)??
?db.t3.ensureIndex({age:1})??
?db.t3.getIndexes();??
?db.t3.ensureIndex({age:1} , {backgroud:true})??
?
文檔索引?
?索引可以任何類型的字段,甚至文檔
?在addr 列上創建索引?
?db.factories.ensureIndex( { addr : 1 } );??
?db.factories.find( { addr: { city: "Beijing", state: "BJ" } } );??
?但是下面這個查詢將不會用到索引,因為查詢的順序跟索引建立的順序不一樣
?db.factories.find( { addr: { state: "BJ" , city: "Beijing"} } );?
??
組合索引 ?
用-1主要是跟排序的時候或指定范圍內查詢 ?的時候有關的。?
db.factories.ensureIndex( { "addr.city" : 1, "addr.state" : 1 } );
// ?下面的查詢都用到了這個索引?
db.factories.find().sort( { "addr.city" : 1 } )??
?
唯一索引 ?
只需在ensureIndex命令中指定”unique:true”即可創建唯一索引。?
db.t4.ensureIndex({firstname: 1, lastname: 1}, {unique: true});??
?
強制使用索引
?db.t5.find({age:{$lt:30}}).hint({name:1, age:1})
?
刪除索引?
?刪除 t3表中的所有索引?
?db.t3.dropIndexes()??
?刪除 t4表中的 firstname 索引??
?db.t4.dropIndex({firstname: 1})?
?
explain?執行計劃
?MongoDB ?提供了一個 explain ?命令讓我們獲知系統如何處理查詢請求。利用 explain ?命令,我們可以很好地觀察系統如何使用索引來加快檢索,同時可以針對性優化索引。
??db.t5.find({age:{$gt:45}}, {name:1}).explain() ? ? ? ??
}
}?
字段說明
cursor: ?返回游標類型(BasicCursor ?或 BtreeCursor)??
nscanned: ?被掃描的文檔數?
n: ?返回的文檔數量??
millis: ?耗時(毫秒)??
indexBounds: ?所使用的索引?
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
