dropDups真的没有工作mongodb

时间:2015-04-20 11:48:58

标签: mongodb

我正在使用mongoDB shell with version 3.0.2 我正在尝试确保集合usernameusers字段的唯一性约束。

这就是我给的:

db.users.ensureIndex({"username": 1},{unique: true})

它给了我以下错误:

{
    "createdCollectionAutomatically" : false,
    "numIndexesBefore" : 1,
    "errmsg" : "exception: E11000 duplicate key error index: mybackend.users.$username_1 dup key: { : \"rahat\" }",
    "code" : 11000,
    "ok" : 0
}

然后我在命令中使用dropDups: true

 db.users.ensureIndex({"username": 1},{unique: true, dropDups: true})

然后我也得到同样的错误:

 {
    "createdCollectionAutomatically" : false,
    "numIndexesBefore" : 1,
    "errmsg" : "exception: E11000 duplicate key error index: mybackend.users.$username_1 dup key: { : \"rahat\" }",
    "code" : 11000,
    "ok" : 0
}

我也看到this SO link,但这里已有一个索引。我的没有。

db.users.getIndexes() - >

[
    {
        "v" : 1,
        "key" : {
            "_id" : 1
        },
        "name" : "_id_",
        "ns" : "mybackend.users"
    }
]

我找了this issue on github并重新启动了mongo,但没有用。我究竟做错了什么?我想我犯了一个愚蠢的错误。请帮忙。

2 个答案:

答案 0 :(得分:11)

自Mongo 3.0版以来,不再支持索引创建的drop duplicates功能。有关3.0版本,请参阅the compatibility changes page

答案 1 :(得分:0)

从MongoDB 3.0开始,这不再是有效选项。

在MongoDB 3.0之前,MongoDB Unique + dupDrops的功能如http://dbversity.com/mongodb-dropdups-to-remove-duplicate-records/所示工作