В настоящее время у меня есть следующая схема:
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 }"
}
}
Итак, как я полагаю, проблема со схемой «Комментарии», и я искал вложенную схему, чтобы посмотреть, смогу ли я решить эту проблему. Я пытался использовать атрибуты "default" и "sparse", но безуспешно.
Наконец, я решил сделать тест и удалить схему комментариев, а также ссылку на нее в схеме групп, просто чтобы убедиться, что все в порядке. Я удалил всю свою базу данных и добавил первую группу (теперь без каких-либо атрибутов комментариев), и все равно получаю сообщение об ошибке всякий раз, когда пытаюсь добавить вторую. Я просто не знаю почему.
Любая помощь?
UPDATE
У меня не было времени в эти последние дни, но, наконец, я обнаружил, в чем проблема. Вероятно, когда я создавал схему комментариев, я мог установить для authorId уникальность, и из-за этого MongoDB создал индекс для этого атрибута. Я не знаю много о MongoDB, и поэтому я не проверял раньше. Но вот где я нашел индекс и удалил его:
Расположение вкладки "индексы" в MongoDB