新聞中心

創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)、博湖網(wǎng)絡(luò)推廣、小程序定制開發(fā)、博湖網(wǎng)絡(luò)營(yíng)銷、博湖企業(yè)策劃、博湖品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供博湖建站搭建服務(wù),24小時(shí)服務(wù)熱線:18982081108,官方網(wǎng)址:www.cdcxhl.com
舉個(gè)簡(jiǎn)單的例子,假如您有一個(gè)集合,其中包含了數(shù)千甚至上萬個(gè)沒有索引的文檔,當(dāng)我們?cè)诩现胁檎夷硞€(gè)文檔時(shí),MongoDB 需要掃描整個(gè)集合來尋找所需的文檔,這種掃描效率極低,特別是在處理大量的數(shù)據(jù)時(shí),可能需要花費(fèi)幾十秒甚至幾分鐘,這對(duì)網(wǎng)站的性能是非常致命的。但如果有索引就不一樣了,MongoDB 可以使用這些索引來限制需要掃描的文檔數(shù)。下面我們就來看一下 MongoDB 中索引的使用。
createIndex() 方法
MongoDB 中您可以使用 createIndex() 方法來創(chuàng)建索引,其語(yǔ)法格式如下:
db.collection_name.createIndex(keys, options)
參數(shù)說明如下:
- keys:由鍵/值對(duì)組成,其中鍵用來定義要?jiǎng)?chuàng)建索引的字段,值用來定義創(chuàng)建索引的順序,1 表示按升序創(chuàng)建索引,-1 表示按降序來創(chuàng)建索引;
- options:可選參數(shù),其中包含一組控制索引創(chuàng)建的選項(xiàng),可選值如下表所示。
| 參數(shù) | 類型 | 描述 |
|---|---|---|
| background | Boolean | 可選參數(shù),當(dāng)值為 true 時(shí),表示在后臺(tái)構(gòu)建索引,避免在創(chuàng)建索引的過程阻塞其它數(shù)據(jù)庫(kù)操作,默認(rèn)值為 false |
| unique | Boolean | 創(chuàng)建唯一索引,當(dāng)值為 true 時(shí)表示創(chuàng)建唯一索引,以避免重復(fù)數(shù)據(jù)的插入,默認(rèn)為 false |
| name | string | 索引的名稱。如果未指定,MongoDB 將通過連接索引的字段名和排序順序生成一個(gè)索引名稱 |
| dropDups | Boolean | 在建立唯一索引時(shí)是否刪除重復(fù)記錄,設(shè)置為 true 則表示創(chuàng)建唯一索引,默認(rèn)值為 false,3.0 版本之后廢棄 |
| sparse | Boolean | 對(duì)文檔中不存在的字段數(shù)據(jù)不啟用索引,這個(gè)參數(shù)需要特別注意,如果設(shè)置為 true 的話,則在索引字段中不會(huì)查詢出不包含對(duì)應(yīng)字段的文檔。默認(rèn)值為 false |
| expireAfterSeconds | integer | 指定一個(gè)以秒為單位的數(shù)值,完成 TTL 設(shè)定,設(shè)定集合的生存時(shí)間 |
| v | index version | 索引的版本號(hào),默認(rèn)的索引版本取決于 mongod 創(chuàng)建索引時(shí)運(yùn)行的版本 |
| weights | document | 索引權(quán)重值,數(shù)值在 1 到 99999 之間,表示該索引相對(duì)于其他索引字段的得分權(quán)重 |
| default_language | string | 對(duì)于文本索引,該語(yǔ)言用于確定停用詞列表以及詞干分析器和令牌生成器的規(guī)則,默認(rèn)為英語(yǔ) |
| language_override | string | 對(duì)于文本索引,指定文檔中包含要替代默認(rèn)語(yǔ)言的語(yǔ)言的字段名稱,默認(rèn)值為 language |
【示例】為集合“course”中的 title 字段創(chuàng)建索引:
> db.course.createIndex({"title":1})
{
"createdCollectionAutomatically" : false,
"numIndexesBefore" : 1,
"numIndexesAfter" : 2,
"ok" : 1
}
另外,createIndex() 方法還可以同時(shí)為多個(gè)字段創(chuàng)建索引,如下所示:
> db.course.createIndex({"title":1, "author":-1})
{
"createdCollectionAutomatically" : false,
"numIndexesBefore" : 2,
"numIndexesAfter" : 3,
"ok" : 1
}
dropIndex() 方法
除了可以創(chuàng)建索引外,您還可以使用 dropIndex() 方法來刪除指定的索引,其語(yǔ)法格式如下:
db.collection_name.dropIndex(index)
其中 index 用來指定要?jiǎng)h除的索引,可以是索引名稱
key的形式,也可以是
{key:1}的形式。
【示例】刪除集合“course”中“title”字段的索引:
> db.course.dropIndex({"title":1})
{ "nIndexesWas" : 3, "ok" : 1 }
dropIndexes() 方法
dropIndexes() 方法同樣用來刪除索引,與 dropIndex() 方法不同 dropIndexes() 方法可以同時(shí)刪除集合中的多個(gè)索引,其語(yǔ)法格式如下:
db.collection_name.dropIndexes()
注意:在使用 dropIndexes() 方法不需要提供任何參數(shù)。
【示例】同時(shí)刪除集合“course”中 title 與 author 字段的索引:
> db.course.dropIndexes()
{
"nIndexesWas" : 2,
"msg" : "non-_id indexes dropped for collection",
"ok" : 1
}
getIndexes() 方法
getIndexes() 方法可以獲取集合中所有索引,語(yǔ)法格式如下:
db.collection_name.getIndexes()
使用 getIndexes() 方法同樣不需要提供任何參數(shù),如下例所示:
> db.course.getIndexes()
[
{
"v" : 2,
"key" : {
"_id" : 1
},
"name" : "_id_",
"ns" : "bianchengbang.course"
},
{
"v" : 2,
"key" : {
"title" : 1,
"author" : -1
},
"name" : "title_1_author_-1",
"ns" : "bianchengbang.course"
}
]網(wǎng)頁(yè)題目:MongoDB索引
瀏覽路徑:http://www.dlmjj.cn/article/cdojgpo.html


咨詢
建站咨詢
