我有一个具有以下架构的用户模型
{
_id: userId,
inbox: {
inbox: [Array of message documents],
sent: [Array of message documents],
}
}
现在,我想通过消息_id在数组之一中查找和更新消息,但是文档可以在任一数组中。
如果在使用$ or运算符后尝试引用文档,则会收到错误The positional operator did not find the match needed from the query.
我可以/应该那样吗?
有更好的方法吗?
我应该只发送邮件是收件箱中还是已发送?
db.getCollection("users").findOneAndUpdate(
{ $or: [
{ 'inbox.sent._id': ObjectId("5cea292c8c03c800d43a8379") },
{ 'inbox.inbox._id': ObjectId("5cea292c8c03c800d43a8379") },
]
},
{
$set: {
'inbox.sent.$.inTrash': true ,
'inbox.inbox.$.inTrash': true
}
}
)