通过具有多个名称的标识符更新匹配的数组

时间:2019-05-26 10:51:37

标签: mongodb mongoose

我有一个具有以下架构的用户模型

{
  _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
    }
  }
)

0 个答案:

没有答案