在mongodb

时间:2018-03-11 13:23:48

标签: node.js mongodb indexing

我在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>

1 个答案:

答案 0 :(得分:0)

发生此错误是因为您为这两个密钥提供了{ unique: true }。始终检查是否已存储在数据库中的calendarproviderId。如果找到则会出现'E11000 duplicate key error collection:之类的错误 在您的情况下,您需要在单个集合中多次providerId,因此您只需执行此操作:

eventSchema.index({ 'calendar' : 1 }, { unique: true, sparse: true });