MongoDB允許深入文檔內(nèi)部,對(duì)嵌套字段和數(shù)組建立索引;嵌套對(duì)象和數(shù)組字段可以和復(fù)合索引中的頂級(jí)字段一起使用,多數(shù)情況下與“正常”索引字段的行為也是一致的。
創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比淇縣網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式淇縣網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋淇縣地區(qū)。費(fèi)用合理售后完善,十多年實(shí)體公司更值得信賴。
一、索引嵌套文檔
例如,集合中的文檔如下格式,
> db.post.findOne({"username":"sid"}) { "_id" : ObjectId("54aff7f43bd1048e7b585e39"), "username" : "sid", "loc" : { "ip" : "1.2.3.4", "city" : "springfield", "state" : "ny" } } >
需要在“l(fā)oc”的city上建立索引來提高這個(gè)loc.city字段的查詢速度:
> db.post.ensureIndex({"loc.city":1}) { "createdCollectionAutomatically" : false, "numIndexesBefore" : 1, "numIndexesAfter" : 2, "ok" : 1 } >
利用這種方式可以建立任意深度的索引,例如可以在X.Y.Z.A.B.C上建立索引。
但是,針對(duì)子文檔“l(fā)oc”上建立的索引,和建立在子文檔的某個(gè)字段“l(fā)oc.city”上的索引是不同的:
(1)對(duì)整個(gè)子文檔上建立的索引,只會(huì)提高整個(gè)子文檔的的查詢速度;也就是說只有在完全匹配子文檔的查詢(包括字段順序),子文檔索引才會(huì)起作用;
(2)只有查詢loc.city字段,索引loc.city才會(huì)起作用,其他情況索引loc.city不起作用;
二、數(shù)組上的索引
(1)可以看得出在數(shù)組字段上建立索引的代價(jià)比較大,因?yàn)槊看蔚膭h除,更新都會(huì)對(duì)每一個(gè)索引進(jìn)行刷新,太消耗 同樣,只有精確匹配comment.10.votes查詢,上述索引才會(huì)起到索引的作用。 三、多鍵索引 如果在數(shù)組字段上創(chuàng)建索引,那么這個(gè)索引稱為多鍵索引( multikey)。 多鍵索引用explain函數(shù)中可以看到“isMultikey”字段的值為true,多鍵索引比非多鍵索引要慢一些;
分享文章:【MongoDB學(xué)習(xí)筆記23】MongoDB的索引對(duì)象和數(shù)組
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)、關(guān)鍵詞優(yōu)化、移動(dòng)網(wǎng)站建設(shè)、標(biāo)簽優(yōu)化、網(wǎng)站收錄、網(wǎng)站維護(hù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源:
創(chuàng)新互聯(lián)
文章源于:http://jinyejixie.com/article30/ggeepo.html