我尝试使用带有Express和Mongoose的Node.js开发RESTful API"例子,我遇到了MongoDB架构的问题:
POST:
{ title: 'My Awesome T-shirt 2',
description: 'All about the details. Of course it\'s black.',
style: '12345' }
{ [MongoError: E11000 duplicate key error index: ecomm_database.products.$style_1 dup key: { : "12345" }]
name: 'MongoError',
err: 'E11000 duplicate key error index: ecomm_database.products.$style_1 dup key: { : "12345" }',
架构定义中存在唯一的约束:
var Product = new Schema({
title: { type: String, required: true },
description: { type: String, required: true },
style: { type: String, unique: true },
modified: { type: Date, default: Date.now } });
如何摆脱这种情况?当我删除unique:true并重新启动应用程序时,架构不会更新。
mongodb如何处理"改变"架构?
答案 0 :(得分:8)
“mongodb如何处理”改变模式?“
MongoDB是架构
强制执行唯一性的唯一因素是您所在的索引级别 可以使用唯一标准在集合上定义索引。所以你可能想删除 相关索引并在必要时重新创建。
答案 1 :(得分:2)
我希望这会有所帮助
db.collection.getIndexes()
返回一个数组,该数组包含一个文档列表,这些文档标识并描述集合中的现有索引。 现在从列表中找到您的索引名称,然后如下所示删除该索引
db.users.dropIndex("your_index_name_here")
答案 2 :(得分:2)