我在mongodb中创建文档时遇到此错误。
errmsg:'E11000重复键错误集:db.events index: calendar_1_providerId_1 dup key:{: ObjectId(\'59c58ac77f8b539bacaa49f0 \'),: “osv8g39so6q0cptpjhj2kk5ps4_20170602T153000Z”}',
提供者ID已经存在于另一个具有不同calendarId的文档中,但由于mongo关闭而服务器崩溃,我收到此错误。
eventSchema.index({'calendar':1,'providerId':1},{unique:true, 稀疏:真});
以下是索引创建代码。任何人都可以帮我这个吗?我真的被困在这里并经历了所有可能的解决方案。
注意: 日历字段不唯一只有日历和providerId的组合在文档中应该是唯一的,例如,同一个提供者可以存在于具有不同日历字段值的两个文档中,并且文档可以具有相同的日历字段值和不同的providerID值。 / p>
答案 0 :(得分:0)
发生此错误是因为您为这两个密钥提供了{ unique: true }
。始终检查是否已存储在数据库中的calendar
或providerId
。如果找到则会出现'E11000 duplicate key error collection:
之类的错误
在您的情况下,您需要在单个集合中多次providerId
,因此您只需执行此操作:
eventSchema.index({ 'calendar' : 1 }, { unique: true, sparse: true });