这是我得到的错误:
MongoError insertDocument :: caused by :: 11000 E11000 duplicate key error index: test.events.$name_1 dup key: { : "Event name" }
Mongo说字段'_id'和'name'是索引。这是名称字段的条目。
我删除了索引,如下所示:Mongoose - caused by :: 11000 E11000 duplicate key error index?现在它完美无缺。但为什么它是一个开始的索引? 是否有自动设置为索引的字段?
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var eventSchema = new Schema({
name: {
type: String,
required: true
}
//other fields
});
eventSchema.index({ name: 0 });
mongoose.model('Event', eventSchema);
PS:我尝试使用eventSchema.index({ name: 0 });
删除索引,但它似乎没有做任何事情。
答案 0 :(得分:1)
默认情况下,MongoDB仅将_id
设置为索引。
创建集合时,您可以为字段name
添加索引,例如eventSchema.index({ name: 0 });
现在,coolection Event
包含字段名称的索引。
为了解决这个问题,你可以做很多事情。
1)使用像@chridam建议的代码删除索引。别忘了也从代码中删除eventSchema.index({ name: 0 });
。因为它将在下次运行时再次创建索引。
2)从DB中删除集合。删除此行eventSchema.index({ name: 0 });
。再次运行代码。现在收集将是索引。
3)或者您可以使name
索引不唯一。
希望这有帮助。