嵌套模式中的猫鼬重复键错误

时间:2018-09-16 01:12:12

标签: database mongodb mongoose

我目前具有以下架构:

    const mongoose = require('mongoose');
    const Schema = mongoose.Schema;
    
    const Comments = new Schema({
        authorId: {
            type: Schema.Types.ObjectId,
            unique: false
        },
        commentBody: {
            type: String
        }
    });
    
    //Create schema
    const GroupSchema = new Schema({
        name:{
            type: String,
            required: true
        },
        comments: [Comments]
    });
    
    module.exports = Group = mongoose.model('group', GroupSchema);

我可以没有错误地插入第一组,但是一旦我尝试添加第二组,我就会收到此错误:

{
    "error": {
        "name": "MongoError",
        "message": "E11000 duplicate key error collection: app-idiomas.groups index: comments.authorId_1 dup key: { : null }",
        "driver": true,
        "index": 0,
        "code": 11000,
        "errmsg": "E11000 duplicate key error collection: app-idiomas.groups index: comments.authorId_1 dup key: { : null }"
    }
}

因此,正如我想的那样,问题出在“注释”模式上,并且我搜索了嵌套模式,以查看是否可以解决此问题。我尝试使用“默认”和“稀疏”属性,但没有成功。

最后,我决定进行测试并删除“注释”架构,并删除“组”架构中的“引用”,以确认一切正常。我擦除了所有数据库,并添加了第一组(现在没有任何comment属性),并且每当尝试添加第二组时仍然出现错误。我只是不知道为什么。

有帮助吗?

更新

这几天我没有时间,但最后我发现了问题所在。可能当我创建评论架构时,我可能已将authorId设置为唯一,因此,MongoDB为此属性创建了一个索引。我对MongoDB的了解不多,这就是为什么我以前没有检查过的原因。但是在这里,我找到了索引并将其删除:

Location of "indexes" tab in MongoDB

1 个答案:

答案 0 :(得分:0)

此问题必须与数据库中的记录有关。
但是正如您所说的,您清除了数据库,问题看起来很奇怪。
再次检查一下是否删除了正确的数据库,即您的api中正在使用的数据库。