W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
考慮以下文檔集合(users ):
{ "address": { "city": "Los Angeles", "state": "California", "pincode": "123" }, "tags": [ "music", "cricket", "blogs" ], "name": "Tom Benzamin" }
以上文檔包含了 address 子文檔和 tags 數(shù)組。
假設我們基于標簽來檢索用戶,為此我們需要對集合中的數(shù)組 tags 建立索引。
在數(shù)組中創(chuàng)建索引,需要對數(shù)組中的每個字段依次建立索引。所以在我們?yōu)閿?shù)組 tags 創(chuàng)建索引時,會為 music、cricket、blogs三個值建立單獨的索引。
使用以下命令創(chuàng)建數(shù)組索引:
>db.users.ensureIndex({"tags":1})
創(chuàng)建索引后,我們可以這樣檢索集合的 tags 字段:
>db.users.find({tags:"cricket"})
為了驗證我們使用使用了索引,可以使用 explain 命令:
>db.users.find({tags:"cricket"}).explain()
以上命令執(zhí)行結果中會顯示 "cursor" : "BtreeCursor tags_1" ,則表示已經(jīng)使用了索引。
假設我們需要通過city、state、pincode字段來檢索文檔,由于這些字段是子文檔的字段,所以我們需要對子文檔建立索引。
為子文檔的三個字段創(chuàng)建索引,命令如下:
>db.users.ensureIndex({"address.city":1,"address.state":1,"address.pincode":1})
一旦創(chuàng)建索引,我們可以使用子文檔的字段來檢索數(shù)據(jù):
>db.users.find({"address.city":"Los Angeles"})
記住查詢表達式必須遵循指定的索引的順序。所以上面創(chuàng)建的索引將支持以下查詢:
>db.users.find({"address.city":"Los Angeles","address.state":"California"})
同樣支持以下查詢:
>db.users.find({"address.city":"LosAngeles","address.state":"California","address.pincode":"123"})
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: