MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

3 façons de créer un index dans MongoDB

Dans MongoDB, vous pouvez créer un index sur une collection en utilisant le createIndex() méthode, la createIndexes() ou la méthode createIndexes commande d'administration.

Le createIndex() Méthode

Le db.collection.createIndex() La méthode crée un index sur la collection spécifiée. C'est un wrapper pour les createIndexes commande d'administration.

Exemple :

db.pets.createIndex( { weight: -1 } )

Cela crée un index sur la collection d'animaux de compagnie. C'est un index décroissant sur le weight domaine. Nous savons qu'il est décroissant car nous avons spécifié -1 . Si nous avions spécifié 1 ça aurait été ascendant.

Un index composé est un index défini sur plusieurs champs. Vous pouvez créer un index composé en séparant chaque champ par une virgule.

Exemple :

db.pets.createIndex( { name: 1, type: -1 } )

Cela crée un index composé sur le name champ (par ordre croissant) et le type champ (par ordre décroissant).

Le createIndexes() Méthode

Le db.collection.createIndexes() La méthode crée un ou plusieurs index sur une collection Cette méthode est également un wrapper pour le createIndexes commande d'administration.

Lorsque vous créez des index avec le createIndexes() méthode, vous devez fournir les champs dans un tableau. Vous devez le faire même si vous ne créez qu'un seul index.

Exemple :

db.pets.createIndexes( [ { weight: -1 } ] )

Cela fait la même chose que le premier exemple. Il crée un index décroissant sur le weight champ.

Pour créer plusieurs index, séparez le document de chaque index par une virgule.

Exemple :

db.pets.createIndexes( [ { name: 1 }, { weight: -1 } ] )

Vous pouvez également créer des index composés avec createIndexes() . Pour ce faire, définissez simplement l'index composé dans le document pour cet index.

Par conséquent, nous pourrions faire ce qui suit :

db.pets.createIndexes( [ { name: 1, type: -1 }, { weight: -1 } ] )

Cela crée un index composé pour le name et type champs, et un index séparé pour le weight champ.

Les createIndexes Commande

Les createIndexes La commande d'administration crée un ou plusieurs index sur une collection Les deux méthodes précédentes sont des enveloppes autour de cette commande.

Par conséquent, nous pouvons utiliser le createIndexes commande pour créer les index que nous avons fait dans les exemples précédents.

Voici un exemple de création d'un index sur le name champ :

db.runCommand(
  {
    createIndexes: "pets",
    indexes: [
      {
        key: { "name" : 1 },
        name: "idx_name_1"
      }
    ]
  }
)

Dans les exemples précédents, nous avons laissé MongoDB nommer nos index, mais dans ce cas, nous avons nommé l'index idx_name_1 .

Voici un exemple de création de plusieurs index :

db.runCommand(
  {
    createIndexes: "pets",
    indexes: [
      {
        key: { "name" : 1, type: -1 },
        name: "idx_name_1_type_-1"
      },
      {
        key: { "weight" : -1 },
        name: "idx_weight_-1"
      }
    ]
  }
)

Dans ce cas, le premier index est un index composé sur le name et type champs, et nous l'avons nommé idx_name_1_type_-1 .

Le deuxième index est sur le weight champ et nous l'avons appelé idx_weight_-1 .

Index génériques

Les trois approches ci-dessus prennent en charge les index génériques à partir de MongoDB 4.2 (la featureCompatibilityVersion doit être au moins 4.2 pour créer des index génériques).

Les index génériques sont utiles pour les collections qui contiennent des données non structurées avec différents champs dans différentes hiérarchies.

Voir Comment créer un index générique dans MongoDB pour des exemples.

Documentation MongoDB

Vous trouverez ci-dessous des liens vers la documentation MongoDB pour chacun des éléments ci-dessus :

  • db.collection.createIndex()
  • db.collection.createIndexes()
  • createIndexes