
创新互联专注为客户提供全方位的互联网综合服务,包含不限于成都做网站、网站设计、博湖网络推广、小程序定制开发、博湖网络营销、博湖企业策划、博湖品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联为所有大学生创业者提供博湖建站搭建服务,24小时服务热线:18982081108,官方网址:www.cdcxhl.com
举个简单的例子,假如您有一个集合,其中包含了数千甚至上万个没有索引的文档,当我们在集合中查找某个文档时,MongoDB 需要扫描整个集合来寻找所需的文档,这种扫描效率极低,特别是在处理大量的数据时,可能需要花费几十秒甚至几分钟,这对网站的性能是非常致命的。但如果有索引就不一样了,MongoDB 可以使用这些索引来限制需要扫描的文档数。下面我们就来看一下 MongoDB 中索引的使用。
createIndex() 方法
MongoDB 中您可以使用 createIndex() 方法来创建索引,其语法格式如下:
db.collection_name.createIndex(keys, options)
参数说明如下:
- keys:由键/值对组成,其中键用来定义要创建索引的字段,值用来定义创建索引的顺序,1 表示按升序创建索引,-1 表示按降序来创建索引;
- options:可选参数,其中包含一组控制索引创建的选项,可选值如下表所示。
| 参数 | 类型 | 描述 |
|---|---|---|
| background | Boolean | 可选参数,当值为 true 时,表示在后台构建索引,避免在创建索引的过程阻塞其它数据库操作,默认值为 false |
| unique | Boolean | 创建唯一索引,当值为 true 时表示创建唯一索引,以避免重复数据的插入,默认为 false |
| name | string | 索引的名称。如果未指定,MongoDB 将通过连接索引的字段名和排序顺序生成一个索引名称 |
| dropDups | Boolean | 在建立唯一索引时是否删除重复记录,设置为 true 则表示创建唯一索引,默认值为 false,3.0 版本之后废弃 |
| sparse | Boolean | 对文档中不存在的字段数据不启用索引,这个参数需要特别注意,如果设置为 true 的话,则在索引字段中不会查询出不包含对应字段的文档。默认值为 false |
| expireAfterSeconds | integer | 指定一个以秒为单位的数值,完成 TTL 设定,设定集合的生存时间 |
| v | index version | 索引的版本号,默认的索引版本取决于 mongod 创建索引时运行的版本 |
| weights | document | 索引权重值,数值在 1 到 99999 之间,表示该索引相对于其他索引字段的得分权重 |
| default_language | string | 对于文本索引,该语言用于确定停用词列表以及词干分析器和令牌生成器的规则,默认为英语 |
| language_override | string | 对于文本索引,指定文档中包含要替代默认语言的语言的字段名称,默认值为 language |
【示例】为集合“course”中的 title 字段创建索引:
> db.course.createIndex({"title":1})
{
"createdCollectionAutomatically" : false,
"numIndexesBefore" : 1,
"numIndexesAfter" : 2,
"ok" : 1
}
另外,createIndex() 方法还可以同时为多个字段创建索引,如下所示:
> db.course.createIndex({"title":1, "author":-1})
{
"createdCollectionAutomatically" : false,
"numIndexesBefore" : 2,
"numIndexesAfter" : 3,
"ok" : 1
}
dropIndex() 方法
除了可以创建索引外,您还可以使用 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() 方法不需要提供任何参数。
【示例】同时删除集合“course”中 title 与 author 字段的索引:
> db.course.dropIndexes()
{
"nIndexesWas" : 2,
"msg" : "non-_id indexes dropped for collection",
"ok" : 1
}
getIndexes() 方法
getIndexes() 方法可以获取集合中所有索引,语法格式如下:
db.collection_name.getIndexes()
使用 getIndexes() 方法同样不需要提供任何参数,如下例所示:
> 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://www.jxjierui.cn/article/cdojgpo.html


咨询
建站咨询
