messages: [
{
user: "5c57c85a9354fa24ad749137",
text: "hello",
unread: true
},
{
user: "5c57c85a9354fa24ad749137",
text: "world",
unread: true
}
]
我正在尝试使用$ []更新ID与给定ID不匹配但没有任何反应的所有数组元素
ChatSchema.update(
{_id: mongoose.Types.ObjectId(req.body.conversationId), "messages": {$elemMatch: {"user": {$ne: mongoose.Types.ObjectId(req.body.userId)}}}},
{$set: {"messages.$[].unread": false}},
{multi: true}
).exec()
当我使用单个$运算符时,它只会更新找到的第一个元素。
我正在使用4.0.6版的mongo和6.7.0版的mongoose
答案 0 :(得分:1)
匹配条件应为$[identifier]
ChatSchema.update(
{ "_id": mongoose.Types.ObjectId(req.body.conversationId) }},
{ "$set": { "messages.$[msg].unread": false }},
{ "arrayFilters":[{ "msg.user": { "$ne": mongoose.Types.ObjectId(req.body.userId) }}] }
)