繁体   English   中英

mongoDB中的“名称”字段是否自动成为索引?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM