English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Les index supportent une analyse efficace des requêtes. Sans index, MongoDB doit scanner chaque document du jeu de données pour sélectionner les documents correspondant à l'expression de la requête. Ce scan est inefficace et nécessite que MongoDB traite une grande quantité de données.
Un index est une structure de données spéciale qui stocke une petite partie du jeu de données de manière facile à parcourir. L'index stocke les valeurs des champs spécifiques ou des ensembles de champs, triées selon les valeurs spécifiées dans l'index.
Pour créer un index, vous devez utiliser la méthode createIndex() de MongoDB.
createIndex()La syntaxe de base de la méthode est la suivante()。
>db.COLLECTION_NAME.createIndex({KEY:1})
Ici, KEY est le nom du champ sur lequel vous souhaitez créer un index,1représente l'ordre croissant. Pour créer un index en ordre décroissant, vous devez utiliser-1。
>db.mycol.createIndex({"title":1}) { "createdCollectionAutomatically": false, "numIndexesBefore": 1, "numIndexesAfter": 2, "ok": 1 } >
DanscreateIndex()Dans la méthode, vous pouvez transmettre plusieurs champs pour créer un index sur plusieurs champs.
>db.mycol.createIndex({"title":1","description":-1}) >
createIndex() prend des paramètres optionnels, la liste des paramètres optionnels est la suivante:
Paramètres | Type | Description |
---|---|---|
background | Boolean | Le processus de création de l'index peut bloquer d'autres opérations de base de données. Le paramètre "background" permet de créer l'index en mode arrière-plan, c'est-à-dire d'ajouter "background" Paramètre optionnel. "background" est la valeur par défaut.false。 |
unique | Boolean | L'index créé est-il unique. Spécifiez true pour créer un index unique. La valeur par défaut estfalse. |
name | string | Le nom de l'index. Si non spécifié, MongoDB génère un nom d'index à partir du nom des champs de l'index et de l'ordre de tri. |
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 的集合中创建了2un index, comme suit-
> db.mycol.createIndex({"title":1","description":-1})
以下示例删除了上面创建的mycol索引:
>db.mycol.dropIndexes({"title":1","description":-1}) { nIndexesWas 2, ok 1 } >
Cette méthode renvoie la description de tous les index de la collection.
Voici la syntaxe de base de la méthode getIndexes()-
db.COLLECTION_NAME.getIndexes()
Supposons que nous ayons créé un index dans la collection nommée mycol2un index, comme suit-
> db.mycol.createIndex({"title":1","description":-1})
Voici un exemple de recherche de tous les index de la collection 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" } ] >