什么是ensureIndex?
我是一个nodejs的学生,并创build一些练习项目。 我最近在我的控制台上看到了这个,当我运行mongoose.set("debug", true)
。
这是什么意思。 为什么它向我显示一个错误 – 重复密钥。
Mongoose: users.ensureIndex({ username: 1 }, { unique: true, background: true }) Mongoose: posts.ensureIndex({ username: 1 }, { unique: true, background: true })
我怎样才能阻止这个创build像这样并修复错误。
E11000 duplicate key error collection: cms_demo1.poosts index: username_1 dup key: { : null }
需要帮忙。
所以它看起来像你使用用户名的索引,应该是唯一的。
每当你做一个写操作,mongo确保索引被尊重。
现在重复密钥的问题,看起来像你有一个文档,其中用户名值为空,现在下一次你传递任何其他文档的用户名为空,它使唯一约束无效,这意味着可能只有一个文档与用户名为空。
如果你想使用唯一索引,也想允许多个文档的用户名空值,你可以使用索引稀疏选项。
您可以删除索引并使用稀疏选项重新创build索引
db.users.dropIndex({username : 1}); db.users.ensureIndex({ username: 1 }, { unique: true, background: true, sparse : true })
我猜你已经通过mongoose给出了索引定义,在这种情况下只需用稀疏选项更新那里的定义。
更多关于稀疏