MongoDB 关于索引操作命令实例详解

本文介绍了MongoDB中索引的基本概念及其对查询性能的影响。详细解释了如何创建单索引、复合索引及唯一索引,并提供了查看和删除索引的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

索引是提高查询查询效率最有效的手段。索引是一种特殊的数据结构,索引以易于遍历的形式存储了数据的部分内容(如:一个特定的字段或一组字段值),索引会按一定规则对存储值进行排序,而且索引的存储位置在内存中,所在从索引中检索数据会非常快。如果没有索引,MongoDB必须扫描集合中的每一个文档,这种扫描的效率非常低,尤其是在数据量较大时。

1.查看索引:
db.COLLECTION_NAME.getIndexes()

[
    {
        "v" : 1,
        "key" : {
            "_id" : 1
        },
        "name" : "_id_",
        "ns" : "mars.COLLECTION_NAME"
    }
]

2.创建索引:
数字 1 表示按索引升序存储,-1 表示按索引降序方式存储
1).创建单索引
db.COLLECTION_NAME.ensureIndex({name:1})

[
    {
        "v" : 1,
        "key" : {
            "_id" : 1
        },
        "name" : "_id_",
        "ns" : "mars.COLLECTION_NAME"
    },
    {
        "v" : 1,
        "key" : {
            "name" : 1
        },
        "name" : "name_1",
        "ns" : "mars.COLLECTION_NAME"
    }
]

2).创建复合索引
db.COLLECTION_NAME.ensureIndex({name:1,age:1})

[
    {
        "v" : 1,
        "key" : {
            "_id" : 1
        },
        "name" : "_id_",
        "ns" : "mars.COLLECTION_NAME"
    },
    {
        "v" : 1,
        "key" : {
            "name" : 1
        },
        "name" : "name_1",
        "ns" : "mars.COLLECTION_NAME"
    },
    {
        "v" : 1,
        "key" : {
            "name" : 1,
            "age" : 1
        },
        "name" : "name_1_age_1",
        "ns" : "mars.COLLECTION_NAME"
    }
]

3).创建唯一索引:
db.COLLECTION_NAME.ensureIndex({name:1,age:1},{unique:true})

[
    {
        "v" : 1,
        "key" : {
            "_id" : 1
        },
        "name" : "_id_",
        "ns" : "mars.COLLECTION_NAME"
    },
    {
        "v" : 1,
        "unique" : true,
        "key" : {
            "name" : 1,
            "age" : 1
        },
        "name" : "name_1_age_1",
        "ns" : "mars.COLLECTION_NAME"
    }
]

3.删除索引:
1).根据索引的 name 字段名称删除,比如如上显示删除第二个索引
db.COLLECTION_NAME.dropIndex("name_1_age_1_unique_true")
2).根据创建时指定的索引的 key 删除,比如如上显示删除第二个索引
db.COLLECTION_NAME.dropIndex({name:1,age:1})
3).删除所有索引
db.COLLECTION_NAME.dropIndexes()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值