如何在MongoDB中一起更新和插入



如果记录不存在某些数据,我想插入一条记录,如果该记录存在,我想更新数据的某些键。但它不会发生在$set,在这种情况下$setOnInsert不起作用。

db.update(
  {key1:value1},
  {
    $set:{key5:value5,key4:value4},
    $setOnInsert: { key1: value1,key2:value2,key3:value3,key4:value4 }
  },
  {upsert:true}
)
.then(out => {
    console.log("for out");
    console.log(out);
    return Promise.resolve(out);
})

预期成果 :-如果记录已经存在,它应该修改 key4。

当前结果 :-

未处理的拒绝:Mongo错误:更新路径"key4"将在"key4"处产生冲突

你在$set和$setOnInsert中都有key4:value4。将其从$setOnInsert中删除。

db.update(

 {key1:value1},
  {
    $set:{key5:value5,key4:value4},
    $setOnInsert: { key1: value1,key2:value2,key3:value3}
  },
  {upsert:true}
)
.then(out => {
    console.log("for out");
    console.log(out);
    return Promise.resolve(out);
})

最新更新