我有一个具有以下架构的用户模型
{
_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}]
}
}
答案 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
}
);