2013-09-06 6 views
5

J'ai un indice composé sur ma collection appelée personnes comme indiqué ci-dessousMongoDB: Impossible de supprimer un indice composé sur une collection

db.people.getIndexes() 
[ 
     { 
       "name" : "_id_", 
       "ns" : "at.people", 
       "key" : { 
         "_id" : 1 
       } 
     }, 
     { 
       "_id" : ObjectId("521dd652a185d3defe301983"), 
       "ns" : "at.people", 
       "key" : { 
         "personname" : 1, 
         "email" : 1, 
         "sex" : 1, 
         "course" : 1 
       }, 
       "name" : "personname_1_email_1_sex_1_course_1", 
       "unique" : false 
     } 
] 

Je suis en train de laisser tomber cet indice ainsi

db.people.dropIndex({"personname_1_email_1_sex_1_course_1": 1}) 

Mais je reçois un message d'erreur comme

{ "errmsg": "index not found", "ok": 0}

J'ai aussi essayé de supprimer l'index par nom

db.people.dropIndex({ "name" : "personname_1_email_1_sex_1_course_1" }) 

Je sais que je peux supprimer les index sur une collection en un seul coup en utilisant la commande ci-dessous

db.people.dropIndexes() 

S'il vous plaît laissez-moi savoir comment résoudre ce ?

+3

Vous devriez le supprimer de cette façon: 'db.people.dropIndex ({personame: 1, email: 1, sex: 1, cap: 1})' –

+0

Merci, est-ce que cette commande ci-dessus dropother index individuels qui sont sur cette champ ?? par exemple j'ai un index individuel comme db.people.ensureIndex ({"personname": 1}, {"unique": false}) – Pawan

+0

Non, ne lâchera que celui-là. –

Répondre

13

passer le nom d'index en dropIndex sans le mettre dans un objet:

db.people.dropIndex("personname_1_email_1_sex_1_course_1") 
1

Je pense que vous êtes très proche. Modifier votre commande à la suivante devrait fonctionner

db.people.dropIndex("personname_1_email_1_sex_1_course_1") 
5

Juste pour faire une réponse complète.

De la documentation: http://docs.mongodb.org/manual/reference/method/db.collection.dropIndex/ vous devez utiliser db.collection.dropIndex() avec string or document que:

Indique l'indice à la baisse. Vous pouvez spécifier l'index par le nom d'index ou par le document de spécification d'index.

donc à la fois:

db.people.dropIndex("personname_1_email_1_sex_1_course_1") 
db.people.dropIndex({personname:1,email:1,sex:1,course:1}) 

fonctionne très bien.

Questions connexes