Mongoose findOneAndUpdate更新多个字段

pda*_*ace 14 mongoose mongodb node.js mongodb-query

findOneAndUpdate方法无法正常工作.我正在尝试一次更新所有字段,但它只更新(设置)最后一个字段.它始终只是最后一个领域.有人能告诉我我做错了什么或我能做些什么来达到预期的效果?

这是我的findOneAndUpdate代码:

Book.findOneAndUpdate({_id:bookId},{$set:{"name": name},$set:{"genre": genre},$set:{"author": author},$set:{"similar": similar}}).exec(function(err, book){
       if(err){
           console.log(err);
           res.status(500).send(err);
       } else {
            res.status(200).send(book);
       }
});
Run Code Online (Sandbox Code Playgroud)

sty*_*ane 34

$set多次使用该运算符.正确的语法$set是:

{ $set: { <field1>: <value1>, ... } }
Run Code Online (Sandbox Code Playgroud)

您需要更改您的更新参数,如下所示:

Book.findOneAndUpdate({ "_id": bookId }, { "$set": { "name": name, "genre": genre, "author": author, "similar": similar}}).exec(function(err, book){
   if(err) {
       console.log(err);
       res.status(500).send(err);
   } else {
            res.status(200).send(book);
   }
});
Run Code Online (Sandbox Code Playgroud)

  • @ 55Cancri所有你需要的是将`$ push:{<field>:<value>,..}`添加到"update"参数:`{$ set:{<field1>:<value1>,... },$ push:{<field>:<value>,..}}` (6认同)