Javascript mongoose和nodejs中的批量更新和插入

Javascript mongoose和nodejs中的批量更新和插入,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我想在nodejs中创建和更新项列表,若项已存在,则更新该项,若不存在,则将其添加到数据库中,若项已存在于数据库中而不存在于列表中,则从数据库中删除该项 我第一次将此列表发送到服务器时: intrestName: [ { name: '11' }, { name: '22' }, { name: '33' }, { name: '44' }] 第一次,我想用以下代码添加所有要保存在数据库中的项目: await IntrestModel.updateMany({},{$set:{...

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

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

intrestName: [
{ name: '11' },
{ name: '22' }, 
{ name: '33' },
{ name: '44' }]
第一次,我想用以下代码添加所有要保存在数据库中的项目:

    await IntrestModel.updateMany({},{$set:{...item.intrestName}}, { upsert: true });
但它没有在datbase中添加任何内容


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

你必须使用猫鼬的
insertMany
方法
updateMany
用于数据库中已有的更新记录,但这不是您的情况

编辑


intrestNames=[
{name:'11'},
{name:'22'},
{name:'33'},
{name:'44'}
]
等待承诺(
intrestNames.map((intrestName)=>{
返回IntrestModel.updateOne(intrestName,{$set:intrestName},{upsert:true})
})
)

我想用它进行更新和插入。出于这个原因,我使用update。更新中的匹配查询为空,它将永远找不到任何内容。另外,如果你想用不同的值更新多个记录,你必须实现一个for循环,updateMany只能更新多个记录,但仍然使用相同的值我在回答中给出了一个例子如果你使用mongoose数据库事务,请将Promise.all移到一个同步for循环中,为了避免书面冲突,如果它不符合你的需要,你必须更清楚地知道你要做什么。如果要用不同的名称更新多个记录,则不能使用updateMany,但必须更新每个记录。如果你想做别的事情,请说得更清楚