English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
O índice suporta a análise eficiente de consultas. Sem índice, o MongoDB deve escanear cada documento do conjunto para escolher os documentos que correspondem à declaração de consulta. Essa varredura é muito eficiente e requer que o MongoDB processe uma grande quantidade de dados.
Um índice é uma estrutura de dados especial que armazena uma pequena parte do conjunto de dados de forma fácil de percorrer. O índice armazena os valores de campos específicos ou conjuntos de campos, ordenados conforme especificado no índice.
Para criar um índice, você precisa usar o método createIndex() do MongoDB.
createIndex()A sintaxe básica do método é como follows()
>db.COLLECTION_NAME.createIndex({KEY:1}
Aqui, KEY é o nome do campo no qual você deseja criar o índice1-1。
>db.mycol.createIndex({"title":1} { "createdCollectionAutomatically": false, "numIndexesBefore": 1, "numIndexesAfter": 2, "ok": 1 } >
EmcreateIndex()No método, você pode passar vários campos para criar índices em vários campos.
>db.mycol.createIndex({"title":1,"description":-1} >
O método createIndex() aceita parâmetros opcionais, a lista de parâmetros opcionais é a seguinte:
Parâmetros | Tipo | Descrição |
---|---|---|
background | Boolean | O processo de criação de índice pode bloquear outras operações do banco de dados. O parâmetro "background" pode especificar a criação de índice em segundo plano, ou seja, adicionar "background" Parâmetro opcional. "background" O valor padrão éfalse。 |
unique | Boolean | Se o índice criado é único. Especificar true cria um índice único. O valor padrão éfalse. |
name | string | O nome do índice. Se não for especificado, o MongoDB gera um nome de índice através do nome do campo de conexão do índice e da ordem de classificação. |
dropDups | Boolean | 3.0+版本已废弃。在建立唯一索引时是否删除重复记录,指定 true 创建唯一索引。默认值为 false. |
sparse | Boolean | 对文档中不存在的字段数据不启用索引;这个参数需要特别注意,如果设置为true的话,在索引字段中不会查询出不包含对应字段的文档.。默认值为 false. |
expireAfterSeconds | integer | 指定一个以秒为单位的数值,完成 TTL设定,设定集合的生存时间。 |
v | index version | 索引的版本号。默认的索引版本取决于mongod创建索引时运行的版本。 |
weights | document | 索引权重值,数值在 1 到 99,999 之间,表示该索引相对于其他索引字段的得分权重。 |
default_language | string | 对于文本索引,该参数决定了停用词及词干和词器的规则的列表。 默认为英语 |
language_override | string | 对于文本索引,该参数指定了包含在文档中的字段名,语言覆盖默认的language,默认值为 language. |
您可以使用MongoDB的dropIndex()方法删除特定索引。
DropIndex() 方法的基本语法如下()。
>db.COLLECTION_NAME.dropIndex({KEY:1}
此处的 key 是您要在其上创建索引的文件的名称,而1表示升序。要以降序创建索引,您需要使用 -1。
> db.mycol.dropIndex({"title":1} { "ok" : 0, "errmsg" : "can't find index with key: { title: 1.0 } "code" : 27, "codeName" : "IndexNotFound" }
此方法删除集合上的多个(指定)索引。
DropIndexes()方法的基本语法如下()。-
>db.COLLECTION_NAME.dropIndexes()
假设我们在命名 mycol 的集合中创建了2índices, conforme mostrado a seguir-
> db.mycol.createIndex({"title":1,"description":-1}
以下示例删除了上面创建的mycol索引:
>db.mycol.dropIndexes({"title":1,"description":-1} { "nIndexesWas" : 2, "ok" : 1 } >
Este método retorna a descrição de todos os índices da coleção.
A seguir está a sintaxe básica do método getIndexes()-
db.COLLECTION_NAME.getIndexes()
Supondo que tenhamos criado2índices, conforme mostrado a seguir-
> db.mycol.createIndex({"title":1,"description":-1}
A seguir, um exemplo de recuperação de todos os índices da coleção 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" } ] >