mongoose:如果不存在则保存,赢得';如果存在,则不更新
在mongoose中,如果文档不存在,是否有一行代码可以保存文档,否则不要更新现有的代码mongoose:如果不存在则保存,赢得';如果存在,则不更新,mongoose,Mongoose,在mongoose中,如果文档不存在,是否有一行代码可以保存文档,否则不要更新现有的代码 我在网上搜索过,但大多数答案都是关于更新现有的一个文档。经过一些幸运的搜索,我发现以下链接非常有用: 关键是在更新参数中设置$setOnInsert,在选项参数中设置upsert:true 下面是一个代码示例: let query={id:searchId}; 让update={ $setOnInsert:{ id:searchId, 福:福, 酒吧:酒吧,, } }; let options
我在网上搜索过,但大多数答案都是关于更新现有的一个文档。经过一些幸运的搜索,我发现以下链接非常有用:
$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))代码>您可以检查文档是否存在,如果不存在则创建它。为什么只需要一行?您可以检查文档是否存在,如果不存在,则创建文档。你为什么要一条线?