gpt4 book ai didi

node.js - 什么是确保指数?

转载 作者:可可西里 更新时间:2023-11-01 10:48:58 26 4
gpt4 key购买 nike

我是一名 nodejs 学生,正在创建一些练习项目。我最近在我的控制台上看到了这个,当我运行 mongoose.set("debug", true) 时。

这是什么意思。为什么它会向我显示一个错误,例如 - 重复键。

Mongoose: users.ensureIndex({ username: 1 }, 
{ unique: true, background: true })
Mongoose: posts.ensureIndex({ username: 1 },
{ unique: true, background: true })

我怎样才能停止这样创建并修复错误。

E11000 duplicate key error collection: cms_demo1.poosts index: username_1 dup key: 
{ : null }

需要帮助。

最佳答案

所以看起来您正在对用户名使用索引,而且它应该是唯一的。

每次执行写入操作时,mongo 都会确保索引得到遵守。

现在重复键的问题,看起来你有一个用户名值为空的文档,现在下一次你传递任何其他用户名为空的文档时,它会使唯一约束无效,这意味着可能只有一个用户名为 null 的文档。

如果你想使用唯一索引并且还想允许多个文档的用户名为空值,你可以使用带有索引的稀疏选项。

您可以删除索引并使用稀疏选项重新创建它

db.users.dropIndex({username : 1});
db.users.ensureIndex({ username: 1 },
{ unique: true, background: true, sparse : true })

我猜你已经通过 mongoose 给出了索引定义,在这种情况下只需使用稀疏选项更新那里的定义。

更多关于 sparse

关于node.js - 什么是确保指数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45461765/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com