我有一个按对象id引用用户模型的电影模型。 用户可以在参加列表中添加或删除自己,我正在尝试使用mode.findOneAndUpdate实现它。 我读到我应该添加$ set,现有的参与用户不会被删除,但即使用$ set,当用户添加自己时,所有现有用户都被删除,现在这个用户是列表中唯一的用户。
以下是代码:
电影模特
{
"_id" : ObjectId("fhdfdca5e1b94fafadhfg1"),
"date" : ISODate("2016-10-05T13:56:43.939Z"),
"attending" : [
ObjectId("fhdf6d0e4501f294a6dgd2")
],
"__v" : 0
}
这是我的findandupdate:
...
.findOneAndUpdate({_id:req.body.movieId}, {$set:{attending:req.body.imAttending}}, {upsert:true})
如何将项目添加到我的参加名单?
TL; DR
如果您不介意在列表中重复,请使用$ push not $ set,或仅为唯一值使用$ addToSet。请参阅下面的答案和评论。
答案 0 :(得分:3)
由于attending
是一个数组,因此您应该使用$push
:
.findOneAndUpdate({
_id : req.body.dinnerId
}, {
$push : { attending : req.body.imAttending }
}, ...)
答案 1 :(得分:0)
我之前也遇到过这样的问题。当你找到一个并更新时使用set运算符,如下所示:
data

它看起来与您发布的内容类似。但它应该接受一些参数并将它们设置为当前对象。如果这对您正在尝试的内容不正确。评论如下。