У меня есть модель под названием Notes
. Он содержит поддокумент requests
, в котором содержатся различные документы со значениями userId
, reqType
, accepted
(по умолчанию false
) и noteId
отправителя, запроса и примечания соответственно. Когда пользователь выбирает определенный маршрут, я хочу сохранить все данные в качестве своих предыдущих значений, просто обновив поле accepted
до true
.
Приведенный ниже код не приводит к изменению данных или другая итерация приводит к удалению всех данных, кроме поля accepted
, и изменению его на true
.
Как мне это сделать?
const noteSchema = new mongoose.Schema(
requests: [
{
userId: mongoose.Schema.ObjectId,
noteId: mongoose.Schema.ObjectId,
reqType: String,
accepted: {
type: Boolean,
default: false,
},
},
],
}
)
const Note = mongoose.model('Note', noteSchema)
const note = await Note.findById(req.body.noteId)
await note.updateOne({
requests: {
$elemMatch: {
userId: req.body.userId,
reqType: req.body.reqType,
noteId: req.body.noteId,
},
$set: { "requests.$.accepted": true },
},
})