【发布时间】:2026-01-01 10:55:02
【问题描述】:
问题: 我希望从我的数组模式中更新多个对象。 我试过的是,下面这个建议,我在这里找到的:Find and Update Object in Mongoose
是的,这可行,但是,这只会更新我的 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
有人可以告诉我吗?
【问题讨论】:
-
感谢您为我指明了正确的方向。非常感谢。
标签: javascript node.js mongodb mongoose