的部分更新我有一個簡單的用戶模式:貓鼬對象
{
_id: "59d72070d9d03b28934b972b"
firstName: "first"
lastName: "last"
email: "[email protected]"
subscriptions: {
newsletter: true,
blog: true
}
}
我試圖做subscriptions
對象的部分更新。我傳遞了用戶的id
和一個可以具有對象的一個或兩個屬性的對象。假設我只想更新newsletter
並將其設置爲false
。我會送:
{ id: "59d72070d9d03b28934b972b", payload: { newsletter: false } }
然後:
const user = await User.findByIdAndUpdate(
args.id,
{ $set: { subscriptions: args.payload } },
{ upsert: true, new: true }
);
這將返回:
subscriptions: {
newsletter: false
}
有沒有辦法只能修改newsletter
屬性時,我只在通過newsletter
有效載荷對象而不刪除其他屬性?我知道在這個例子中我只有兩個屬性,但是隨着時間的推移,對象將不斷擴展。
這將工作,但會執行2個請求:1'users.findOne'和1'users.update',而最初只有1個'users.findAndModify' –