在猫鼬中,如果没有文档,是否有一行代码可以保存文档,否则不要更新现有的代码。
我已经在线搜索过,但是大多数答案都是关于更新现有一个文档。
答案 0 :(得分:0)
经过幸运的搜索,我发现以下链接确实很有帮助:
关键是在更新参数中设置$setOnInsert
,在选项参数中设置upsert:true
。
这是一个代码示例:
let query = {id: searchId};
let update = {
$setOnInsert: {
id: searchId,
foo: foo,
bar: bar,
}
};
let options = { upsert: true };
SampleModel.findOneAndUpdate(query, update, options)
.catch(error => console.error(error));
绝对欢迎任何想法,答案或改进!
答案 1 :(得分:0)
编辑:请注意,这只适用于数组!
尽管这是一个旧帖子,但我发现了一些可以帮助人们解决这个问题的东西。
您可以使用 $addToSet 代替 $setOnInsert。这将添加您要插入的任何数据,但如果数据存在,则不会发生任何事情。
let query = {id: searchId};
let update = {
$addtoSet: {
[id: searchId]
}
};
SampleModel.findOneAndUpdate(query, update)
.catch(error => console.error(error));