2013-09-06 18 views
5

Ho un indice composito sulla mia collezione chiamata persone come illustrato di seguitoMongoDB: impossibile cadere un indice composito su una collezione

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 
     } 
] 

Sto cercando di eliminare questo indice in questo modo

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

Ma sto ottenendo il messaggio di errore come

{ "errmsg": "Indice non trovato", "ok": 0}

.210

Ho anche cercato di eliminare l'indice in base al nome

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

so di poter eliminare gli indici su una collezione in un solo colpo con il comando di seguito

db.people.dropIndexes() 

prega fatemi sapere come risolvere Questo ?

+3

Si dovrebbe rilasciarlo in questo modo: 'db.people.dropIndex ({nome persona: 1, email: 1, sesso: 1, corso: 1})' –

+0

Grazie, sarà questo comando di comando altri singoli indici che sono su quello campo ?? per esempio ho un indice individuale come db.people.ensureIndex ({"personname": 1}, {"unique": false}) – Pawan

+0

No, lascerà cadere solo quello. –

risposta

13

passare il nome indice in dropIndex senza metterlo in un oggetto:

db.people.dropIndex("personname_1_email_1_sex_1_course_1") 
1

Penso che tu sia molto vicino. La modifica del tuo comando a quello sotto dovrebbe funzionare

db.people.dropIndex("personname_1_email_1_sex_1_course_1") 
5

Giusto per fare una risposta completa.

Da documentazione: http://docs.mongodb.org/manual/reference/method/db.collection.dropIndex/ si dovrebbe usare db.collection.dropIndex() con string or document che:

specifica l'indice a cadere. È possibile specificare l'indice tramite il nome dell'indice o dal documento di specifica dell'indice.

Così sia:

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

funziona bene.

Problemi correlati