Проблема: Я использую sh для обновления нескольких объектов из моей схемы массива. Я пробовал следующее предложение, которое я нашел здесь: Найти и обновить объект в понедельник goose
Да, это работает, однако это обновит только первый элемент в моем массиве messages_details, который содержит желаемый объект.
await MessagesDetails
.update(
{
_id : message_id,
messages_details : {
$elemMatch : {
user_id: user_id
}
}
},
{
$set: {
'messages_details.$.message_isRead': true,
}
}
)
Вот моя схема ниже:
const mongoose = require('mongoose')
const Schema = mongoose.Schema
const MessagesDetails = new Schema({
_id : Schema.Types.ObjectId,
messages_details_subject : {
type : String,
required : true
},
messages_details_sender : {
type : Array,
required : true
},
messages_details_recipient : {
type : Array,
required : true
},
messages_details_created : {
type : Date,
required : true
},
messages_details_updated : {
type : Date,
required : true
},
messages_details_isArchived : {
type : Boolean,
required : true
},
messages_details : [
{
user_id : Schema.Types.ObjectId,
user_username : {
type : String,
required : true
},
message_content : {
type : String
},
message_date : {
type : Date
},
message_isArchived : {
type : Boolean
},
message_isRead : {
type : Boolean
}
}
]
})
module.exports = mongoose.model( 'messages_details', MessagesDetails )
Итак, моя конечная цель здесь - установить для message_isRead значение true на основе этих запросов ниже;
_id
messages_details.user_id
Кто-нибудь, пожалуйста, просветите меня?