mongoose:如果不存在则保存,赢得';如果存在,则不更新

mongoose:如果不存在则保存,赢得';如果存在,则不更新,mongoose,Mongoose,在mongoose中,如果文档不存在,是否有一行代码可以保存文档,否则不要更新现有的代码 我在网上搜索过,但大多数答案都是关于更新现有的一个文档。经过一些幸运的搜索,我发现以下链接非常有用: 关键是在更新参数中设置$setOnInsert,在选项参数中设置upsert:true 下面是一个代码示例: let query={id:searchId}; 让update={ $setOnInsert:{ id:searchId, 福:福, 酒吧:酒吧,, } }; let options

在mongoose中,如果文档不存在,是否有一行代码可以保存文档,否则不要更新现有的代码


我在网上搜索过,但大多数答案都是关于更新现有的一个文档。

经过一些幸运的搜索,我发现以下链接非常有用:

关键是在更新参数中设置
$setOnInsert
,在选项参数中设置
upsert:true

下面是一个代码示例:

let query={id:searchId};
让update={
$setOnInsert:{
id:searchId,
福:福,
酒吧:酒吧,,
}
};
let options={upsert:true};
SampleModel.findOneAndUpdate(查询、更新、选项)

.catch(error=>console.error(error))经过一些幸运的搜索,我发现以下链接非常有用:

关键是在更新参数中设置
$setOnInsert
,在选项参数中设置
upsert:true

下面是一个代码示例:

let query={id:searchId};
让update={
$setOnInsert:{
id:searchId,
福:福,
酒吧:酒吧,,
}
};
let options={upsert:true};
SampleModel.findOneAndUpdate(查询、更新、选项)

.catch(error=>console.error(error))编辑:注意,这只适用于数组

尽管这是一篇老文章,我还是发现了一些可以帮助人们理解这一点的东西

您可以使用$addToSet来代替$setOnInsert。这将添加您正在插入的任何数据,但如果数据存在,则不会发生任何事情

let query={id:searchId};
让update={
$addtoSet:{
[id:searchId]
}
};
SampleModel.findOneAndUpdate(查询、更新)

.catch(error=>console.error(error))编辑:注意,这只适用于数组

尽管这是一篇老文章,我还是发现了一些可以帮助人们理解这一点的东西

您可以使用$addToSet来代替$setOnInsert。这将添加您正在插入的任何数据,但如果数据存在,则不会发生任何事情

let query={id:searchId};
让update={
$addtoSet:{
[id:searchId]
}
};
SampleModel.findOneAndUpdate(查询、更新)

.catch(error=>console.error(error))您可以检查文档是否存在,如果不存在则创建它。为什么只需要一行?您可以检查文档是否存在,如果不存在,则创建文档。你为什么要一条线?