MongoDB 索引

MongoDB 索引

索引支持高效解析查询。如果没有索引,MongoDB必须扫描集合中的每个文档来选择与查询语句匹配的文档。这种扫描非常低效,并且需要MongoDB处理大量的数据。

索引是特殊的数据结构,以易于遍历的形式存储数据集的一小部分。索引按照索引中指定字段的值进行排序,存储特定字段或一组字段的值。

createIndex() 方法

要创建索引,您需要使用MongoDB的createIndex()方法。

语法

createIndex() 方法的基本语法如下:

>db.COLLECTION_NAME.createIndex({KEY:1})

这里的key是您想要创建索引的字段的名称,而1表示升序。要按降序创建索引,需要使用-1。

示例

>db.mycol.createIndex({"title":1})
{
    "createdCollectionAutomatically" : false,
    "numIndexesBefore" : 1,
    "numIndexesAfter" : 2,
    "ok" : 1
}
>

createIndex() 方法中,您可以传入多个字段,以在多个字段上创建索引。

>db.mycol.createIndex({"title":1,"description":-1})
>

该方法还接受选项列表(可选)。以下是列表 –

参数 类型 描述
background Boolean 在后台构建索引,以便构建索引不会阻塞其他数据库活动。指定true以在后台构建。默认值为 false
unique Boolean 创建唯一索引,使集合不接受索引键或键与索引中现有值匹配的文档插入。指定true创建唯一索引。默认值为 false
name string 索引的名称。如果未指定,MongoDB通过连接索引字段的名称和排序顺序生成索引名称。
sparse Boolean 如果为true,则索引仅引用具有指定字段的文档。这些索引占用更少的空间,但在某些情况下(尤其是排序)表现不同。默认值为 false
weights document 权重是一个从1到99,999的数字,表示字段相对于其他索引字段在分值方面的重要性。
default_language string 对于文本索引,确定停用词列表和词干提取器和标记器规则的语言。默认值为 英语
language_override string 对于文本索引,指定包含要覆盖默认语言的语言的文档中的字段的名称。默认值为language。

dropIndex() 方法

您可以使用 MongoDB 的 dropIndex() 方法删除特定的索引。

语法

dropIndex() 方法的基本语法如下()。

>db.COLLECTION_NAME.dropIndex({KEY:1})

在这里,”key” 是您想要删除现有索引的文件名。除了索引规范文件(上面的语法)之外,您还可以直接指定索引的名称:

dropIndex("name_of_the_index")

示例

> db.mycol.dropIndex({"title":1})
{
    "ok" : 0,
    "errmsg" : "can't find index with key: { title: 1.0 }",
    "code" : 27,
    "codeName" : "IndexNotFound"
}

dropIndexes()方法

该方法在集合上删除多个(指定的)索引。

语法

dropIndexes()方法的基本语法如下:

>db.COLLECTION_NAME.dropIndexes()

示例

假设我们已经在名为mycol的集合中创建了2个索引,如下所示-

> db.mycol.createIndex({"title":1,"description":-1})

以下示例将删除上述创建的mycol索引−

>db.mycol.dropIndexes({"title":1,"description":-1})
{ "nIndexesWas" : 2, "ok" : 1 }
>

getIndexes()方法

该方法返回集合中所有索引的描述。

语法

以下是getIndexes()方法的基本语法:

db.COLLECTION_NAME.getIndexes()

示例

假设我们在名为mycol的集合中创建了2个索引,如下所示-

> db.mycol.createIndex({"title":1,"description":-1})

以下示例检索mycol集合中的所有索引:

> db.mycol.getIndexes()
[
    {
        "v" : 2,
        "key" : {
            "_id" : 1
        },
        "name" : "_id_",
        "ns" : "test.mycol"
    },
    {
        "v" : 2,
        "key" : {
            "title" : 1,
            "description" : -1
        },
        "name" : "title_1_description_-1",
        "ns" : "test.mycol"
    }
]
>

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程