《MongoDB 高級索引》要點:
本文介紹了MongoDB 高級索引,希望對您有用。如果有疑問,可以聯系我們。
相關主題:非關系型數據庫
《MongoDB 高級索引》是否對您有啟發,歡迎查看更多與《MongoDB 高級索引》相關教程,學精學透。維易PHP學院為您提供精彩教程。
考慮以下文檔聚攏(users ):
{
"address": {
"city": "Los Angeles",
"state": "California",
"pincode": "123"
},
"tags": [
"music",
"cricket",
"blogs"
],
"name": "Tom Benzamin"}
以上文檔包括了 address 子文檔和 tags 數組.
索引數組字段
假設我們基于標簽來檢索用戶,為此我們必要對集合中的數組 tags 建立索引.
在數組中創建索引,必要對數組中的每個字段依次建立索引.所以在我們為數組 tags 創建索引時,會為 music、cricket、blogs三個值建立單獨的索引.
使用以下命令創立數組索引:
>db.users.ensureIndex({"tags":1})
創立索引后,我們可以這樣檢索集合的 tags 字段:
>db.users.find({tags:"cricket"})
為了驗證我們使用使用了索引,可以使用 explain 命令:
>db.users.find({tags:"cricket"}).explain()
以上命令執行結果中會顯示 "cursor" : "BtreeCursor tags_1" ,則表現已經使用了索引.
索引子文檔字段
假設我們必要通過city、state、pincode字段來檢索文檔,由于這些字段是子文檔的字段,所以我們必要對子文檔建立索引.
為子文檔的三個字段創立索引,命令如下:
>db.users.ensureIndex({"address.city":1,"address.state":1,"address.pincode":1})
一旦創立索引,我們可以使用子文檔的字段來檢索數據:
>db.users.find({"address.city":"Los Angeles"})
記住查詢表達式必需遵循指定的索引的順序.所以上面創建的索引將支持以下查詢:
>db.users.find({"address.city":"Los Angeles","address.state":"California"})
同樣支持以下查詢:
>db.users.find({"address.city":"LosAngeles","address.state":"California","address.pincode":"123"})
如您還有不明確的可以在下面與我留言或是與我探討QQ群308855039,我們一起飛!