是否可以在一个查询中执行这两个"操作
const deleteUser = await BOQ.findOneAndUpdate({_id:req.params.id}, { $pop: { user: 1 }});
const assignUser = await BOQ.findOneAndUpdate({_id:req.params.id}, {$push:{user: req.params.userId}})
如果可能的话,谁能告诉我怎么做?
我尽力了
const deleteUser = await BOQ.findOneAndUpdate({_id:req.params.id}, { $pop: { user: 1 }},
{$push: {user: req.params.userId}});
但这行不通
2条答案
按热度按时间hi3rlvi21#
第二个参数是update操作符的文档,可以参考documentation来获得更多关于参数的细节。
csbfibhn2#
不能在同一查询中同时使用
$push
和$pop
运算符。但是,您可以使用带有
$slice
修饰符的$push
操作符,这将确保数组中只包含固定数量的项--并且将有效地根据$slice
的值从开头或结尾“弹出”项。例如,下面的代码确保了数组中只保留两个项目。新的项目放在末尾,旧的项目从开头移除。
arr
是字段名,它必须是一个数组才能正常工作。这在您的用例中可能不起作用,但这似乎是在单个调用中同时执行push和pop的唯一方法。