如何执行批量更新插入

How to perform Bulk Upsert

我正在尝试对文档执行批量更新插入。我知道这不能在 Meteor:Mongo 中本地完成,并且节点 MongoDB 库必须与 rawCollection 一起使用。

我有以下

const bulkUpserts = [];
for (let doc of docs) {

  bulkUpserts.push({
    updateOne: {
      filter: {
        fizz: doc.buzz
      },
      update: doc,
      upsert: true,
      setOnInsert: {
        "foo": "bar",
        "createdBy": Meteor.userId(),
        "createdDate": new Date()
      }
    }
  });
}

Collection.rawCollection().bulkWrite(bulkUpserts);

^ 的问题是 setOnInsert 似乎不起作用。我的 foo 没有设置。 setOnInsert 似乎无法作为 updateOne 的选项使用。有什么选择呢?令人惊讶的是,我还没有找到在 Meteor 中执行此操作的方法。

谢谢!

我最终使用了

const bulk = LineItems.rawCollection().initializeUnorderedBulkOp();

for (let doc of docs) {    
  bulk.find({
    fizz: doc.buzz
  }).upsert().updateOne({
    $set: doc,
    $setOnInsert: {
      _id: Random.id(),
      "foo": "bar",
      "createdBy": Meteor.userId(),
      "createdDate": new Date()
    }
  });
}
bulk.execute().then().catch(error => console.error(error));