mongoDB中的'name'字段会自动成为索引吗?



这是我遇到的错误: MongoError insertDocument :: caused by :: 11000 E11000 duplicate key error index: test.events.$name_1 dup key: { : "Event name" }

mongo说字段" _id"one_answers"名称"是索引。这是名称字段的条目。

我删除了此处给出的索引:mongoose-由:: 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 });删除索引,但似乎无需做任何事情。

mongodb默认情况下仅将 _id设置为索引。

创建集合时,您会为字段 name添加索引,例如此eventSchema.index({ name: 0 });

现在冷却Event具有字段名称索引。

为了修复它,您可以做一些事情。

1)用@chridam建议的代码删除索引。不要忘记也从代码中删除eventSchema.index({ name: 0 });。因为它将在下一个运行中再次创建索引。

2)从数据库中删除收集。删除此行eventSchema.index({ name: 0 });。再次运行代码。现在收集将是witout索引。

3),也可以使name索引变得不是唯一。

希望这会有所帮助。

最新更新