MongoDB DuplicateKeyException

时间:2015-07-28 18:12:57

标签: mongodb duplicates mongodb-.net-driver

WriteConcern detected an error 'insertDocument :: caused by :: 11000 E11000 duplicate key error index: develop.Test.$AppId_1_UserId_1_Type_1__sub_1__key_1  dup key: { ... }'. (Response was { "ok" : 1, "code" : 11000, "err" : "insertDocument :: caused by :: 11000 E11000 duplicate key error index: develop.Test.$AppId_1_UserId_1_Type_1__sub_1__key_1  dup key: {...}).

尝试在我的集合中插入新条目时出现上述错误。令我困惑的是我的关键是Guid id字段。该实体具有AppId和UserId字段,但这些字段不应该是关键字,不应该是唯一的。

在我保存Id之前就是全部为零。将它设置为唯一的Guid后,但是save调用会抛出MongoDuplicateKey错误。 也许是因为我是Mongo的新手,但我不明白,任何帮助都会受到赞赏。

更新

获取索引的输出

{
    "0" : {
        "v" : 1,
        "key" : {
            "_id" : 1
        },
        "name" : "_id_",
        "ns" : "develop.Test"
    },
    "1" : {
        "v" : 1,
        "unique" : true,
        "key" : {
            "AppId" : 1,
            "UserId" : 1,
            "Type" : 1,
            "_sub" : 1,
            "_key" : 1
        },
        "name" : "AppId_1_UserId_1_Type_1__sub_1__key_1",
        "ns" : "develop.Test"
    },
    "2" : {
        "v" : 1,
        "key" : {
            "Type" : 1,
            "_sub" : 1,
            "_g" : 1
        },
        "name" : "Type_1__sub_1__g_1",
        "ns" : "develop.Test"
    }
}

1 个答案:

答案 0 :(得分:2)

您在AppIdUserIdTypesubkey字段上有一个unique compound indexes为什么你会收到这个错误。

"1" : {
        "v" : 1,
        "unique" : true,
        "key" : {
            "AppId" : 1,
            "UserId" : 1,
            "Type" : 1,
            "_sub" : 1,
            "_key" : 1
        },
        "name" : "AppId_1_UserId_1_Type_1__sub_1__key_1",
        "ns" : "develop.Test"
    },

现在该怎么解决这个问题?

  • 如果您没有创建它,那么也许您是同事或某人。在这种情况下您不会在不与他们交谈的情况下删除索引
  • 您可能希望使用db.collection.dropIndex(index)方法

    删除索引
    db.collection.dropIndex({ AppId: 1, UserId: 1, Type: 1, _sub: 1, _key: 1 })