MongoDB索引

什么是索引?

索引是一种特殊的数据结构,索引存储在一个易于遍历读取的数据集合中,索引是对数据库表中一列或者多列的值进行排序的一种结构。索引能够极大提高查询效率,特别是在处理大数据量时,如果没有索引,MongoDB在读取数据时必须扫描集合中的每个文件并选取那些符合查询条件的记录。

1.创建与重建索引

MongoDB索引的创建使用ensureIndex()方法,对于已经存在的索引可以使用reIndex进行重建

ensureIndex()的使用:

语法结构:

db.collection_name.ensureIndex(keys[,options])

keys:要建立的参数列表。如:{KEY:1},其中KEY表示字段名,1表示升序,也可使用数字-1降序。

options:可选参数,表示建立索引的设置。可选值有:

background,Boolean值 在后台建立索引,以便建立索引时不阻止其他数据库活动。默认值false

unique,Boolean值  创建唯一索引。默认值false

name,String值 指定索引的名字,如未指定,MongoDB会生成一个索引字段的名称和排序顺序串联。

dropDups,Boolean,创建唯一索引时,如果出现重复删除后续出现的相同索引,只保留第一个。

sparse,Boolean,对文档中不存在的字段数据不启用索引。默认值是 false。

v,index version,索引的版本号。

weights,document,索引权重值,数值在 1 到 99,999 之间,表示该索引相对于其他索引字段的得分权重。

为集合xmm创建索引:

> db.xmm.ensureIndex({name:1,domain:-1})
{
        "createdCollectionAutomatically" : true,
        "numIndexesBefore" : 1,
        "numIndexesAfter" : 2,
        "ok" : 1
}

为集合xmm重建索引:

db.COLLECTION_NAME.reIndex()
> db.xmm.reIndex()
{
        "nIndexesWas" : 2,
        "nIndexes" : 2,
        "indexes" : [
                {
                        "v" : 2,
                        "key" : {
                                "_id" : 1
                        },
                        "name" : "_id_",
                        "ns" : "test.xmm"
                },
                {
                        "v" : 2,
                        "key" : {
                                "name" : 1,
                                "domain" : -1
                        },
                        "name" : "name_1_domain_-1",
                        "ns" : "test.xmm"
                }
        ],
        "ok" : 1
}
>

查看索引:

db.COLLECTION_NAME.getIndexes()
> db.xmm.getIndexes()
[
        {
                "v" : 2,
                "key" : {
                        "_id" : 1
                },
                "name" : "_id_",
                "ns" : "test.xmm"
        },
        {
                "v" : 2,
                "key" : {
                        "name" : 1,
                        "domain" : -1
                },
                "name" : "name_1_domain_-1",
                "ns" : "test.xmm"
        }
]
>

查看集合中索引大小:

db.COLLECTION_NAME.totalIndexSize()
> db.xmm.totalIndexSize()
8192
>

查看数据库中所有索引:

db.system.indexes.find()

删除索引:

不需要的索引,我们可以将其删除,删除索引时,可以删除集合中某一处索引,可以删除全部索引。

删除指定索引:

db.collection_name.dropIndex("INDEX-NAME")

删除所有索引:

db.collection_name.dropIndexes()

 

 

 

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值