MongoDB教學
MongoDB快速入門
MongoDB歷史
MongoDB特點
MongoDB數據庫的優點
MongoDB安裝配置(Windows)
MongoDB安裝配置(Ubuntu)
MongoDB安裝配置(RedHat/CentOS)
MongoDB數據建模
MongoDB創建數據庫
MongoDB刪除數據庫
MongoDB創建集合
MongoDB刪除集合
MongoDB數據類型
MongoDB插入文檔
MongoDB查詢文檔
MongoDB更新文檔
MongoDB刪除文檔
MongoDB投影(選擇字段)
MongoDB限制記錄數
MongoDB排序記錄
MongoDB索引
MongoDB聚合
MongoDB複製
MongoDB分片
MongoDB備份與恢復
MongoDB部署
Java連接MongoDB操作
Python連接MongoDB操作
PHP連接MongoDB操作
Ruby連接MongoDB操作
MongoDB高級索引
在這一章節中,我們來學習高級索引,假設users
集合的以下文檔 -
{
"address": {
"city": "Haikou",
"province": "Hainan",
"pincode": "123456"
},
"tags": [
"music",
"cricket",
"blogs"
],
"name": "Maxsu"
}
上述文檔包含地址子文檔和標籤數組。
索引數組字段
假設要根據用戶的標籤搜索用戶文檔。爲此,我們將在集合中的tags
數組上創建一個索引。
在數組上創建一個索引依次爲每個字段創建單獨的索引條目。所以在這個例子中,當在tags
數組上創建一個索引時,將爲其值music
,cricket
和blogs
創建單獨的索引。
要在tags
數組上創建索引,請使用以下代碼 -
>db.users.ensureIndex({"tags":1})
創建索引後,可以搜索這個集合的標籤字段 -
>db.users.find({tags:"cricket"})
要驗證是否使用正確的索引,請使用以下說明命令 -
>db.users.find({tags:"cricket"}).explain()
上面的命令生成:「cursor」:「BtreeCursor tags_1」
,它確認使用了正確的索引。
索引子文檔字段
假設要搜索基於city
,province
和pincode
字段的文檔。 由於所有這些字段都是地址子文檔字段的一部分,因此將在子文檔的所有字段上創建一個索引。
要在子文檔的所有三個字段上創建索引,請使用以下代碼 -
>db.users.ensureIndex({"address.city":1,"address.state":1,"address.pincode":1})
創建索引後,就可以使用此索引來搜索任何子文檔的字段了,如下所示:
>db.users.find({"address.city":"Haikou"})
請記住,查詢表達式必須遵循指定的索引的順序。 所以上面創建的索引將支持以下查詢 -
>db.users.find({"address.city":"Haikou","address.province":"Hainan"})
它還將支持以下查詢 -
>db.users.find({"address.city":"Haikou","address.province":"Hainan",
"address.pincode":"12345"})