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()
当我使用单个$运算符时,它只更新找到的第一个元素。
我使用的是mongo版本4.0.6和mongoose版本6.7.0
发布于 2019-05-13 01:07:01
匹配条件应为
ChatSchema.update(
{ "_id": mongoose.Types.ObjectId(req.body.conversationId) }},
{ "$set": { "messages.$[msg].unread": false }},
{ "arrayFilters":[{ "msg.user": { "$ne": mongoose.Types.ObjectId(req.body.userId) }}] }
)
https://stackoverflow.com/questions/56101346
复制相似问题