掃二維碼與項(xiàng)目經(jīng)理溝通
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
考慮以下文檔集合(users ):

我們提供的服務(wù)有:網(wǎng)站制作、成都網(wǎng)站制作、微信公眾號(hào)開(kāi)發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、惠濟(jì)ssl等。為成百上千企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的惠濟(jì)網(wǎng)站制作公司
{
"address": {
"city": "Los Angeles",
"state": "California",
"pincode": "123"
},
"tags": [
"music",
"cricket",
"blogs"
],
"name": "Tom Benzamin"
}
以上文檔包含了 address 子文檔和 tags 數(shù)組。
假設(shè)我們基于標(biāo)簽來(lái)檢索用戶,為此我們需要對(duì)集合中的數(shù)組 tags 建立索引。
在數(shù)組中創(chuàng)建索引,需要對(duì)數(shù)組中的每個(gè)字段依次建立索引。所以在我們?yōu)閿?shù)組 tags 創(chuàng)建索引時(shí),會(huì)為 music、cricket、blogs三個(gè)值建立單獨(dú)的索引。
使用以下命令創(chuàng)建數(shù)組索引:
>db.users.ensureIndex({"tags":1})
創(chuàng)建索引后,我們可以這樣檢索集合的 tags 字段:
>db.users.find({tags:"cricket"})
為了驗(yàn)證我們使用使用了索引,可以使用 explain 命令:
>db.users.find({tags:"cricket"}).explain()
以上命令執(zhí)行結(jié)果中會(huì)顯示 "cursor" : "BtreeCursor tags_1" ,則表示已經(jīng)使用了索引。
假設(shè)我們需要通過(guò)city、state、pincode字段來(lái)檢索文檔,由于這些字段是子文檔的字段,所以我們需要對(duì)子文檔建立索引。
為子文檔的三個(gè)字段創(chuàng)建索引,命令如下:
>db.users.ensureIndex({"address.city":1,"address.state":1,"address.pincode":1})
一旦創(chuàng)建索引,我們可以使用子文檔的字段來(lái)檢索數(shù)據(jù):
>db.users.find({"address.city":"Los Angeles"})
查詢表達(dá)不一定遵循指定的索引的順序,mongodb 會(huì)自動(dòng)優(yōu)化。所以上面創(chuàng)建的索引將支持以下查詢:
>db.users.find({"address.state":"California","address.city":"Los Angeles"})
同樣支持以下查詢:
>db.users.find({"address.city":"Los Angeles","address.state":"California","address.pincode":"123"})

我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流