Почему такое поведение?
Причина, по которой вы имеете разные _id
s в объекте двух фруктов, которые должны быть одинаковыми, заключается в том, что вы не добавили свойство _id
в схема фрукта и поскольку _id
является обязательным свойством всего документа MongoDB, mon goose поможет вам автоматически сгенерировать новый _id
при создании запроса для отправки в базу данных. _id
, который он генерирует при запуске watermelon.save()
, отличается от _id
, который он генерирует при запуске person.save()
, поэтому вы видите два разных _id
s.
Исправление:
Что вам нужно сделать, это добавить свойство _id
к схеме фрукта (и, возможно, схему человека, чтобы избежать дальнейших сюрпризов), а затем явно сгенерировать _id
ваше собственное перед тем, как сохранить документ в базу данных. Схема фруктов должна выглядеть следующим образом после добавления свойства _id
:
const fruitSchema = new mongoose.Schema({
_id: mongoose.ObjectId,
name: {
type: String,
required: true
},
rating: {
type: Number,
min: 1,
max: 10,
},
review: String
});
И при создании экземпляра модели фруктов добавьте значение _id
самостоятельно:
const watermelon = new Fruit({
_id: mongoose.Types.ObjectId(), // this helps generate a unique objectId
name: "Watermelon",
rating: 7,
review: "Meh."
});