[英]Is the 'name' field in mongoDB automatically an index?
这是我得到的错误: MongoError insertDocument :: caused by :: 11000 E11000 duplicate key error index: test.events.$name_1 dup key: { : "Event name" }
Mongo说字段“ _id”和“名称”是索引。 这是名称字段的条目。
我删除了索引,如下所示: 猫鼬-由:: 11000 E11000重复键错误索引引起? 它现在可以完美运行。 但是为什么要从索引开始呢? 是否有自动设置为索引的字段?
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 });
删除索引eventSchema.index({ name: 0 });
,但似乎什么也没做。
默认情况下,MongoDB仅将_id
设置为索引。
创建集合时,您需要为字段name
添加索引,例如eventSchema.index({ name: 0 });
现在,coolection Event
具有字段名称的索引。
为了修复它,您可以做一些事情。
1)使用@chridam建议之类的代码删除索引。 不要忘记还要删除eventSchema.index({ name: 0 });
从代码。 因为它将在下次运行时再次创建索引。
2)从数据库中删除集合。 删除此行eventSchema.index({ name: 0 });
。 再次运行代码。 现在集合将是索引。
3)或者您可以使name
索引不唯一。
希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.