版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/netdxy/article/details/54847909
索引是提高查询查询效率最有效的手段。索引是一种特殊的数据结构,索引以易于遍历的形式存储了数据的部分内容(如:一个特定的字段或一组字段值),索引会按一定规则对存储值进行排序,而且索引的存储位置在内存中,所在从索引中检索数据会非常快。如果没有索引,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()