mongoosefindOneAndUpdate更新多个字段

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

您正在多次使用$set操作符。 $set的正确语法是:

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

你需要像这样改变你的更新参数:

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