更新后如何仅返回数组内部的更新后的子文档

时间:2019-05-26 12:11:11

标签: mongodb mongoose

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

{
  _id: userId,
  inbox: {
    inbox: [Array of message documents],
    sent: [Array of message documents],
  }
}

在mongodb / mongoose中进行更新后,是否有办法仅获取更新的子文档?

更新很好,我只想返回更新的子文档,而不是再次查询数据库

db.getCollection("users").findOneAndUpdate(
  { "inbox.sent._id": ObjectId("5cea23be8c03c800d43a8376") },
  { "$set": { "inbox.sent.$.inTrash": false } },
  { "inbox.sent.$": 1 } <-- how to return only the subdocument like in a query
);

仅在更新的文档中预期在inbox.sent输出数组

{
  _id: userId,
  inbox: {
    sent: [{ updated doc}]
  }  
}

1 个答案:

答案 0 :(得分:0)

您需要对findOneAndUpdate函数应用回调

例如:

db.getCollection("users").findOneAndUpdate(
  { "inbox.sent._id": ObjectId("5cea23be8c03c800d43a8376") },
  { "$set": { "inbox.sent.$.inTrash": false } },
  { "inbox.sent.$": 1 },
  function (err, res) {
    //here you have the res, which will be the affected record
  }
);