的部分更新我有一个简单的用户模式:猫鼬对象
{
_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' –