鍍金池/ 教程/ 數(shù)據(jù)庫/ 索引
更新文檔
GridFS
Rockmongo 管理工具
Map Reduce
Java
創(chuàng)建備份
數(shù)據(jù)模型
創(chuàng)建數(shù)據(jù)庫
映射
查詢文檔
索引限制
ObjectId
刪除文檔
數(shù)據(jù)類型
高級索引
索引
優(yōu)勢
記錄排序
查詢分析
插入文檔
刪除集合
全文檢索
創(chuàng)建集合
概述
數(shù)據(jù)庫引用
覆蓋索引查詢
安裝環(huán)境
PHP
刪除數(shù)據(jù)庫
固定集合
關(guān)系
聚合
自動增長
復(fù)制
限制記錄
部署
分片
正則表達(dá)式
原子操作

索引

索引能夠?qū)崿F(xiàn)高效地查詢。沒有索引,MongoDB 就必須掃描集合中的所有文檔,才能找到匹配查詢語句的文檔。這種掃描毫無效率可言,需要處理大量的數(shù)據(jù)。

索引是一種特殊的數(shù)據(jù)結(jié)構(gòu),將一小塊數(shù)據(jù)集保存為容易遍歷的形式。索引能夠存儲某種特殊字段或字段集的值,并按照索引指定的方式將字段值進(jìn)行排序。

ensureIndex() 方法

要想創(chuàng)建索引,需要使用 MongoDB 的 ensureIndex() 方法。

語法格式

ensureIndex() 方法的基本語法格式為:

>db.COLLECTION_NAME.ensureIndex({KEY:1})

這里的 key 是想創(chuàng)建索引的字段名稱,1 代表按升序排列字段值。-1 代表按降序排列。

范例

>db.mycol.ensureIndex({"title":1})
>

可以為 ensureIndex() 方法傳入多個(gè)字段,從而為多個(gè)字段創(chuàng)建索引。

>db.mycol.ensureIndex({"title":1,"description":-1})
>  

ensureIndex() 方法也可以接受一些可選參數(shù),如下所示:

參數(shù) 類型 描述
background 布爾值 在后臺構(gòu)建索引,從而不干擾數(shù)據(jù)庫的其他活動。取值為 true 時(shí),代表在后臺構(gòu)建索引。默認(rèn)值為 false
unique 布爾值 創(chuàng)建一個(gè)唯一的索引,從而當(dāng)索引鍵匹配了索引中一個(gè)已存在值時(shí),集合不接受文檔的插入。取值為 true 代表創(chuàng)建唯一性索引。默認(rèn)值為 false
name 字符串 索引名稱。如果未指定,MongoDB 會結(jié)合索引字段名稱和排序序號,生成一個(gè)索引名稱。
dropDups 布爾值 在可能有重復(fù)的字段內(nèi)創(chuàng)建唯一性索引。MongoDB 只在某個(gè)鍵第一次出現(xiàn)時(shí)進(jìn)行索引,去除該鍵后續(xù)出現(xiàn)時(shí)的所有文檔。
sparse 布爾值 如果為 true,索引只引用帶有指定字段的文檔。這些索引占據(jù)的空間較小,但在一些情況下的表現(xiàn)也不同(特別是排序)。默認(rèn)值為 false
expireAfterSeconds 整型值 指定一個(gè)秒數(shù)值,作為 TTL 來控制 MongoDB 保持集合中文檔的時(shí)間。
v 索引版本 索引版本號。默認(rèn)的索引版本跟創(chuàng)建索引時(shí)運(yùn)行的 MongoDB 版本號有關(guān)。
weights 文檔 數(shù)值,范圍從 1 到 99, 999。表示就字段相對于其他索引字段的重要性。
default_language 字符串 對文本索引而言,用于確定停止詞列表,以及詞干分析器(stemmer)與斷詞器(tokenizer)的規(guī)則。默認(rèn)值為 english。
language_override 字符串 對文本索引而言,指定了文檔所包含的字段名,該語言將覆蓋默認(rèn)語言。默認(rèn)值為 language。
上一篇:更新文檔下一篇:復(fù)制