Mongoose findOneAndUpdate 更新多个字段

Posted

技术标签:

【中文标题】Mongoose findOneAndUpdate 更新多个字段【英文标题】:Mongoose findOneAndUpdate Updating Multiple Fields 【发布时间】:2016-09-13 00:25:22 【问题描述】:

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);
       
);

【问题讨论】:

【参考方案1】:

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

 $set:  <field1>: <value1>, ...  

您需要像这样更改您的 update 参数:

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);
   
);

【讨论】:

如果您想在同一个 findByIdAndUpdate 字段中设置 $set 和 $push 怎么办?那么语法会如何呢? @55Cancri 您只需将$push: &lt;field&gt;: &lt;value&gt;, .. 添加到“更新”参数: $set: &lt;field1&gt;: &lt;value1&gt;, ... , $push: &lt;field&gt;: &lt;value&gt;, .. @styvane 你能看看这个 Q ***.com/a/70171269/15454800

以上是关于Mongoose findOneAndUpdate 更新多个字段的主要内容,如果未能解决你的问题,请参考以下文章

Mongoose:findOneAndUpdate 不返回更新的文档

Mongoose - 使用 findOneAndUpdate 更新子文档

Mongoose `findOneAndUpdate` 回调不传递更新的文档

Mongoose `findOneAndUpdate` 回调不传递更新的文档

Mongoose:findOneAndUpdate 不适用于多种条件

Mongoose findOneAndUpdate 更新多个字段