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: <field>: <value>, ..
添加到“更新”参数: $set: <field1>: <value1>, ... , $push: <field>: <value>, ..
@styvane 你能看看这个 Q ***.com/a/70171269/15454800以上是关于Mongoose findOneAndUpdate 更新多个字段的主要内容,如果未能解决你的问题,请参考以下文章
Mongoose:findOneAndUpdate 不返回更新的文档
Mongoose - 使用 findOneAndUpdate 更新子文档
Mongoose `findOneAndUpdate` 回调不传递更新的文档
Mongoose `findOneAndUpdate` 回调不传递更新的文档