Création d'index multi-champs dans Mongoose / MongoDB


93

J'essaie de trouver de la documentation, en vain, sur la façon de créer des index multi-champs dans Mongoosejs. En particulier, j'ai deux champs qui doivent être indexés et uniques. Qu'est-ce qu'un exemple de schéma de mangouste qui indexe deux champs ensemble?

Réponses:


198

Vous appelez la indexméthode sur votre Schemaobjet pour faire cela comme indiqué ici . Pour votre cas, ce serait quelque chose comme:

mySchema.index({field1: 1, field2: 1}, {unique: true});

2
C'est ce qu'on appelle l'indice Compount dans mongodb. Ainsi, il crée des index comme champ1 et champ1 + champ2. C'est donc d'abord un index selon le champ 1, puis à l'intérieur du champ 1 par rapport au champ 2
Ketan Ghumatkar

1
quelle est la signification du 1 après field1: et field2:?
Damon Yuan

9
@DamonYuan Ils définissent l'ordre de tri des champs de l'index. 1est ascendant, -1serait descendant.
JohnnyHK

1
@KetanGhumatkar Il est basé sur l'ordre dans lequel les champs sont répertoriés dans l'objet dans l'appel à index.
JohnnyHK

2
1et -1 spécifie une clé d'index croissante ou décroissante sur le champ d'index. J'ai trouvé des documents http://mongodb.github.io/node-mongodb-native/2.1/tutorials/create-indexes/
Thai Ha


0

À propos, la réponse acceptée est fausse, selon https://stackoverflow.com/a/52553550/129300, vous devez envelopper les noms de champs entre guillemets simples, c'est-à-dire:

mySchema.index({'field1': 1, 'field2': 1}, {unique: true});

Bonne journée!


Les clés d'objet dans JS peuvent être sans guillemets tant qu'il s'agit d'identificateurs syntaxiquement valides. field1et field2sont des identifiants valides. field1.foon'est pas, par exemple.
Gus le

-3
    Following command can be used to create compound index for nested json:
    db.ACCOUNT_collection.createIndex({"account.id":1,"account.customerId":1},{unique:1}) 
Mongo json structure is like :
{"_id":"648738"
 "account": { 
    "id": "123",
    "customerId": 7879,
    "name": "test"
   ..
   ..

  }
}

J'ai testé avec des exemples de données, cela fonctionne parfaitement comme prévu.


Nous ne voulons pas qu'avec le shell mangoustes, nous voulons qu'avec le schéma node js
Rohit Nishad
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.