Problem:
If an index is created with a name, then dropIndex will fail to drop the index. However, runCommand(
Reproduce:
Do the following
> db.journeys.save( {type :1, tm_uuid:2} )
> db.journeys.ensureIndex({type:1, tm_uuid:1}, {name:"Type TM-UUID"});
> db.journeys.getIndexes()
[
{
"name" : "_id_",
"ns" : "test.journeys",
"key" : {
"_id" : 1
}
},
{
"_id" : ObjectId("4cab0f09f29d24000f38d92f"),
"ns" : "test.journeys",
"key" : {
"type" : 1,
"tm_uuid" : 1
},
"name" : "Type TM-UUID"
}
]
> db.journeys.dropIndex({name:"Type TM-UUID"});
{ "errmsg" : "index not found", "ok" : 0 }
> db.runCommand({dropIndexes:'journeys', index : {type:1,tm_uuid:1}})
{ "nIndexesWas" : 2, "ok" : 1 }
> db.journeys.getIndexes()
[
{
"name" : "_id_",
"ns" : "test.journeys",
"key" : {
"_id" : 1
}
}
]
Workaround:
Use db.runCommand({dropIndexes...}
) to drop a index with a name.
Business Case:
User Expereince