新聞中心

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


咨詢
建站咨詢
