如何执行批量更新插入
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));
我正在尝试对文档执行批量更新插入。我知道这不能在 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));