有没有一种很好的方法可以在mongoose中保存或更新文档?像我之后的那样
let campaign = new Campaign({
title: req.body.title,
market: req.body.market,
logo: req.body.logo,
additional_question_information: question,
status: status
});
campaign.saveOrUpdate().then(function() { ... }
感谢所有人的帮助
答案 0 :(得分:13)
我认为你所寻找的东西被称为'upsert'。
您可以使用findOneAndUpdate并传递{upsert:true}选项,如下例所示:
let campaign = new Campaign({
title: req.body.title,
market: req.body.market,
logo: req.body.logo,
additional_question_information: question,
status: status
});
Campaign.findOneAndUpdate({
_id: mongoose.Types.ObjectId('CAMPAIGN ID TO SEARCH FOR')
}, campaign, { upsert: true }, function(err, res) {
// Deal with the response data/error
});
findOneAndUpdate的第一个参数是用于查看您是保存新文档还是更新现有文档的查询。如果要在响应数据中返回修改后的文档,则还可以添加{ new: true }
选项。
此处有关于findOneAndUpdate的文档:http://mongoosejs.com/docs/api.html#model_Model.findOneAndUpdate
答案 1 :(得分:0)
您可以使用MongoDB的findAndModify功能。在mongoose中,通过调用findOneAndUpdate()可以原生地支持它。这是它的文档。 http://mongoosejs.com/docs/api.html#query_Query-findOneAndUpdate
请注意,在第三个参数中,它等待一个对象与选项一起传递。如果不存在,您希望在其中使用{ upsert : true }
来创建新文档。