MongoDB 索引
索引
索引支持查询的有效解析。没有索引,MongoDB必须扫描集合中的每个文档以选择与查询语句匹配的那些文档。这种扫描效率极低,需要MongoDB处理大量数据。索引是特殊的数据结构,以易于遍历的形式存储数据集的一小部分。索引存储特定字段或一组字段的值,该值由索引中指定的字段值排序。
createIndex()方法
要创建索引,您需要使用MongoDB的createIndex()方法。
createIndex()方法的基本语法如下
>db.COLLECTION_NAME.createIndex({KEY:1})
此处的key是要在其上创建索引的字段的名称,而1代表升序。要以降序创建索引,您需要使用-1。
示例
db.empDetails.createIndex({"uid":1});
{
"createdCollectionAutomatically" : false,
"numIndexesBefore" : 1,
"numIndexesAfter" : 2,
"ok" : 1
}
在createIndex()方法中,您可以传递多个字段,以在多个字段上创建索引。
db.empDetails.createIndex({"uid":1,"title":-1});
此方法还接受选项列表(可选)。以下是列表-
参考:https://docs.mongodb.com/manual/reference/method/db.collection.createIndex/index.html
dropIndex()方法
您可以使用MongoDB的dropIndex()方法删除特定索引。
DropIndex()方法的基本语法如下
>db.COLLECTION_NAME.dropIndex({KEY:1})
此处的key是您要在其上创建索引的文件的名称,而1代表升序。要以降序创建索引,您需要使用-1。
示例
>db.empDetails.dropIndex({"uid":1});
{ "nIndexesWas" : 2, "ok" : 1 }
参考:https://docs.mongodb.com/manual/reference/method/db.collection.dropIndex/index.html
dropIndexes()方法
此方法删除集合上的多个(指定)索引。
dropIndexes()方法的基本语法如下
>db.COLLECTION_NAME.dropIndexes()
假设我们在命名的mycol集合中创建了2个索引,如下所示。
示例
db.empDetails.createIndex({"uid":1,"title":-1});
以下示例删除了上面创建的mycol索引-
db.empDetails.dropIndexes({"uid":1,"title":-1});
参考:https://docs.mongodb.com/manual/reference/method/db.collection.dropIndexes/index.html
getIndexes()方法
此方法返回集合中所有索引的描述。
getIndexes()方法的基本语法如下
db.COLLECTION_NAME.getIndexes()
假设我们在命名的mycol集合中创建了2个索引,如下所示。
示例
db.empDetails.createIndex({"uid":1,"title":-1});
以下示例检索集合mycol中的所有索引-
db.empDetails.getIndexes();
[
{
"v" : 2,
"key" : {
"_id" : 1
},
"name" : "_id_"
},
{
"v" : 2,
"key" : {
"uid" : 1,
"title" : -1
},
"name" : "uid_1_title_-1"
}
]
参考:https://docs.mongodb.com/manual/reference/method/db.collection.getIndexes/index.html