即使声明了upsert,批量操作仍在替换其他字段

时间:2019-04-05 00:53:17

标签: mongodb bulkupdate

如果声明了upsert,为什么要大量替换其他字段?

我在做什么错了?

原始收藏:

   {
      _id:'xx',
      a:1
    }

过程

    var bulk = collection.initializeUnorderedBulkOp();

    users.forEach(x => {

      bulk
        .find({ _id:'xx'})
        .upsert()
        .updateOne({
          b: 2
        });
    });

    bulk.execute();

结果

{
  _id:'xx',
  b:2
}

1 个答案:

答案 0 :(得分:0)

现在我不明白!我需要使用$ set命令,以便它仅更新某些字段。

var bulk = collection.initializeUnorderedBulkOp();

users.forEach(x => {

  bulk
    .find({ _id:'xx'})
    .upsert()
    .updateOne({
        $set: //CHANGED LINE
        { 
          b: 2
        }
   });

});

bulk.execute();

现在可以使用

{
  _id:'xx',
  a:1,
  b:2
}