MongoDB:无法删除集合上的复合索引

Paw*_*wan 5 mongodb

我的集合中有一个名为people的复合索引,如下所示

 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
        }
]
Run Code Online (Sandbox Code Playgroud)

我试图以这种方式放弃这个索引

 db.people.dropIndex({"personname_1_email_1_sex_1_course_1": 1})
Run Code Online (Sandbox Code Playgroud)

但我收到错误消息

{"errmsg":"找不到索引","ok":0}

我还尝试按名称删除索引

db.people.dropIndex( { "name" : "personname_1_email_1_sex_1_course_1" } )
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用下面的命令一次性删除集合上的索引

db.people.dropIndexes()
Run Code Online (Sandbox Code Playgroud)

请让我知道如何解决这个问题?

Joh*_*yHK 14

将索引名称传递dropIndex给它而不将其放入对象:

db.people.dropIndex("personname_1_email_1_sex_1_course_1")
Run Code Online (Sandbox Code Playgroud)


Yev*_*yev 6

只是为了做出完整的答案.

从技术文档:http://docs.mongodb.org/manual/reference/method/db.collection.dropIndex/你应该使用db.collection.dropIndex()具有string or document如下:

指定要删除的索引.您可以通过索引名称或索引规范文档指定索引.

所以两者:

db.people.dropIndex("personname_1_email_1_sex_1_course_1")
db.people.dropIndex({personname:1,email:1,sex:1,course:1})
Run Code Online (Sandbox Code Playgroud)

工作良好.