程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MongoDB數據庫 >> MongoDB基礎知識 >> MongoDB 高級索引

MongoDB 高級索引

編輯:MongoDB基礎知識

MongoDB 高級索引

考慮以下文檔集合(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"})
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved