提问者:小点点

在mongoose和nodejs中批量更新和插入


我想在nodejs中创建和更新项目列表,如果项目已经存在则更新该项目,如果不存在则将其添加到数据库中,如果项目已经存在于数据库中而不存在于列表中,则从数据库中删除该项目。

在我第一次将此列表发送到服务器时:

intrestName: [
{ name: '11' },
{ name: '22' }, 
{ name: '33' },
{ name: '44' }]

在第一次我想添加所有该项目以保存在数据库中的代码:

    await IntrestModel.updateMany({},{$set:{...item.intrestName}}, { upsert: true });

但它没有在数据库中添加任何内容。

有什么问题?我怎样才能解决这个问题????


共1个答案

匿名用户

您必须使用猫鼬的insertmany方法。UpdateMany用于数据库中已有的更新记录,但不适合您的情况

https://mongoosejs.com/docs/api.html#model_model.insertmany

编辑


intrestNames = [
  { name: '11' },
  { name: '22' }, 
  { name: '33' },
  { name: '44' }
]

await Promise.all(
  intrestNames.map((intrestName) => {
    return IntrestModel.updateOne(intrestName, {$set: intrestName}, { upsert: true })
 })
)