Mongodb E11000非现有文档的重复键错误

时间:2018-02-28 21:08:15

标签: mongodb heroku mongoose collation mlab

更新

仍有问题,我尝试在mongo shell中完成所有这些操作,错误看起来更奇怪:

db.coupons.createIndex({ event: 1, code: 1 }, { unique: true, name: 'event_1_code_1_2', collation: { locale: 'en', strength: 2 } })

{
    "ok" : 0,
    "errmsg" : "E11000 duplicate key error index: heroku_xxxxxx.coupons.$event_1_code_1_2 dup key: 
               { : ObjectId('5944128753af0c001feaaca6'), : \"-)COU)9O\u0001\f\" }",
    "code" : 11000,
    "codeName" : "DuplicateKey"
}

我保证,我已经使用.find()并手动搜索任何与此非常相似的文档。我发现什么都没有。这个文档不存在,或者mongodb有一个我不知道的奇怪的隐藏文档功能。

我收到错误,我明白这意味着什么,但我找不到任何会导致错误的文件。

我正在使用heroku / mongoose / mlab并尝试创建不区分大小写的唯一索引:

CouponSchema.index({ event: 1, code: 1 }, { name: 'event_1_code_1_2', unique: true, collation: { locale: 'en', strength: 2 } });
  

未处理拒绝MongoError:E11000重复键错误索引:   heroku_XXXXXX.coupons。$ event_1_code_1_2 dup key:{:   ObjectId('59dfbf630dda30002665129b'),:“/ 9S9AES1”}

这不适用于生产(使用现有数据)。看看我会想到的错误:还有另一个代码为“/ 9S9AES1”的文档,其中包含不同的字符。但我搜索任何带有代码“/ 9S9AES1”的文档,我发现没什么。

我甚至搜索过:

"code": {
    "$regex": ".*9S9.*",
    "$options": "i"
}

找不到文件。

我也有一个类似的索引没有整理工作。有没有人有想法?

1 个答案:

答案 0 :(得分:0)

从架构中删除“唯一”属性,或者不要使用同一选项卡来注册多个帐户,除非您从当前选项卡中注销其中一个。删除唯一属性后,请从数据库中删除所有数据并再次注册。希望对您有所帮助。是我的