
- MongoDB 教程
- MongoDB - 首頁
- MongoDB - 概述
- MongoDB - 優勢
- MongoDB - 環境搭建
- MongoDB - 資料建模
- MongoDB - 建立資料庫
- MongoDB - 刪除資料庫
- MongoDB - 建立集合
- MongoDB - 刪除集合
- MongoDB - 資料型別
- MongoDB - 插入文件
- MongoDB - 查詢文件
- MongoDB - 更新文件
- MongoDB - 刪除文件
- MongoDB - 投影
- MongoDB - 限制記錄
- MongoDB - 排序記錄
- MongoDB - 索引
- MongoDB - 聚合
- MongoDB - 複製
- MongoDB - 分片
- MongoDB - 建立備份
- MongoDB - 部署
- MongoDB - Java
- MongoDB - PHP
- 高階 MongoDB
- MongoDB - 關係
- MongoDB - 資料庫引用
- MongoDB - 覆蓋查詢
- MongoDB - 分析查詢
- MongoDB - 原子操作
- MongoDB - 高階索引
- MongoDB - 索引限制
- MongoDB - ObjectId
- MongoDB - Map Reduce
- MongoDB - 文字搜尋
- MongoDB - 正則表示式
- 使用 Rockmongo
- MongoDB - GridFS
- MongoDB - 定長集合
- 自動遞增序列
- MongoDB 有用資源
- MongoDB - 常見問題解答
- MongoDB - 快速指南
- MongoDB - 有用資源
- MongoDB - 討論
MongoDB - 索引
索引支援高效地解決查詢。如果沒有索引,MongoDB 必須掃描集合中的每個文件以選擇與查詢語句匹配的文件。這種掃描效率極低,並且需要 MongoDB 處理大量資料。
索引是特殊的資料結構,以易於遍歷的形式儲存資料集的一小部分資料。索引儲存特定欄位或欄位集的值,並根據索引中指定的欄位值進行排序。
createIndex() 方法
要建立索引,您需要使用 MongoDB 的 createIndex() 方法。
語法
createIndex() 方法的基本語法如下所示。
>db.COLLECTION_NAME.createIndex({KEY:1})
這裡 key 是要建立索引的欄位的名稱,1 表示升序。要建立降序索引,您需要使用 -1。
示例
>db.mycol.createIndex({"title":1}) { "createdCollectionAutomatically" : false, "numIndexesBefore" : 1, "numIndexesAfter" : 2, "ok" : 1 } >
在 createIndex() 方法中,您可以傳遞多個欄位,以在多個欄位上建立索引。
>db.mycol.createIndex({"title":1,"description":-1}) >
此方法還接受選項列表(可選)。以下是列表 -
引數 | 型別 | 描述 |
---|---|---|
background | 布林值 | 在後臺構建索引,以便構建索引不會阻塞其他資料庫活動。指定 true 以在後臺構建。預設值為 false。 |
unique | 布林值 | 布林值 |
建立一個唯一索引,以便集合不會接受插入索引鍵或鍵與索引中現有值匹配的文件。指定 true 以建立唯一索引。預設值為 false。 | name | 字串 |
索引的名稱。如果未指定,MongoDB 會透過連線索引欄位的名稱和排序順序來生成索引名稱。 | 布林值 | sparse |
布林值 | 如果為 true,則索引僅引用包含指定欄位的文件。這些索引使用更少的空間,但在某些情況下(特別是排序)的行為會有所不同。預設值為 false。 | expireAfterSeconds |
整數 | 以秒為單位指定一個值作為 TTL,以控制 MongoDB 在此集合中保留文件的時間。 | weights |
文件 | name | 權重是介於 1 到 99,999 之間的數字,表示該欄位相對於其他索引欄位在分數方面的意義。 |
default_language | name | 對於文字索引,確定停止詞列表以及詞幹分析器和分詞器的規則的語言。預設值為 English。 |
language_override
對於文字索引,指定文件中包含用於覆蓋預設語言的語言的欄位的名稱。預設值為 language。
語法
dropIndex() 方法
>db.COLLECTION_NAME.dropIndex({KEY:1})
您可以使用 MongoDB 的 dropIndex() 方法刪除特定索引。
dropIndex("name_of_the_index")
示例
> db.mycol.dropIndex({"title":1}) { "ok" : 0, "errmsg" : "can't find index with key: { title: 1.0 }", "code" : 27, "codeName" : "IndexNotFound" }
DropIndex() 方法的基本語法如下所示。
這裡,“key”是要從中刪除現有索引的檔案的名稱。您還可以直接指定索引名稱,而不是索引規範文件(以上語法),如
語法
dropIndexes() 方法
>db.COLLECTION_NAME.dropIndexes()
示例
此方法刪除集合上的多個(指定的)索引。
> db.mycol.createIndex({"title":1,"description":-1})
DropIndexes() 方法的基本語法如下所示 -
>db.mycol.dropIndexes({"title":1,"description":-1}) { "nIndexesWas" : 2, "ok" : 1 } >
假設我們在名為 mycol 的集合中建立了 2 個索引,如下所示 -
以下示例刪除了上面建立的 mycol 的索引 -
語法
getIndexes() 方法
db.COLLECTION_NAME.getIndexes()
示例
此方法刪除集合上的多個(指定的)索引。
> db.mycol.createIndex({"title":1,"description":-1})
此方法返回集合中所有索引的描述。
> db.mycol.getIndexes() [ { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_", "ns" : "test.mycol" }, { "v" : 2, "key" : { "title" : 1, "description" : -1 }, "name" : "title_1_description_-1", "ns" : "test.mycol" } ] >
以下示例檢索集合 mycol 中的所有索引 -
列印頁面