【发布时间】:2020-04-23 06:32:21
【问题描述】:
我有一个如下定义的猫鼬模式:
{
Username: {
type: String,
unique: true,
required: true,
},
Password: {
type: String,
required: true,
minlength: 10,
maxlength: 20
}
}
例如,在我们启动正在运行的应用程序的生产版本后,如果我想将“用户名”的“唯一”更改为 unique: false,我应该怎么做?
所以在我的机器上,当服务器运行时,我使用用户名和密码创建了一个用户,mongo 为我创建了用户,现在我在代码中手动将唯一选项值更改为 unique: false 并重新启动我的服务器,mongo 抛出一个错误提示 "E11000 duplicate key error collection: TFM-Dev-Server.admins index: Username_1 dup key: { Username: \"admin\" }"。但我确实将 Unique 选项更改为 false。只有当我删除我的数据库时它才有效。但是我不能继续使用用户数据来删除我的生产数据库,因为这样的小改动。有人请告诉我如何实施最好的方法。
在我的应用程序中,架构在我的应用程序的几个区域经常更改,我想在不停止和删除生产服务器的数据库的情况下处理它们。
谢谢
【问题讨论】:
-
不能删除 db 而不是删除 index 吗?
db.collection.dropIndexes() -
只需删除
Username的唯一索引(通过在猫鼬模式中定义创建):db.collection.dropIndex("Username_1");或db.runCommand( { dropIndexes: "collection", index: "Username_1" });
标签: node.js mongodb express mongoose mongoose-schema