[英]Bulk create in Meteor
我需要在 Meteor 中一次创建 2000 个文档。 我知道我可以使用
for (i=0; i<2000; i++) {
CollectionName.insert({});
}
但我希望 Meteor 中有一个批量创建功能。 如何以最快的方式插入这 2000 行?
Meteor 本身并不支持这一点。 但是,它确实让您可以访问节点 Mongodb 驱动程序,该驱动程序本身可以进行批量插入。
您只能在服务器上执行此操作:
var x = new Mongo.Collection("xxx");
x.rawCollection.insert([doc1, doc2, doc3...], function(err, result) {
console.log(err, result)
});
或者使用 MongoDB 2.6,如果您的 Meteor 实例可以访问它:
var bulk = x.initializeUnorderedBulkOp();
bulk.insert( { _id: 1, item: "abc123", status: "A", soldQty: 5000 } );
bulk.insert( { _id: 2, item: "abc456", status: "A", soldQty: 150 } );
bulk.insert( { _id: 3, item: "abc789", status: "P", soldQty: 0 } );
bulk.execute( { w: "majority", wtimeout: 5000 } );
笔记:
扩展@Akshat 的答案,这是适用于 Meteor 1.0+ 的语法
x = new Mongo.Collection("x");
var bulk = x.rawCollection().initializeUnorderedBulkOp();
bulk.insert( { _id: 1, item: "abc123", status: "A", soldQty: 5000 } );
bulk.insert( { _id: 2, item: "abc456", status: "A", soldQty: 150 } );
bulk.insert( { _id: 3, item: "abc789", status: "P", soldQty: 0 } );
Meteor.wrapAsync(bulk.execute)();
这是我使用的:
/server/fixtures.js
var insertIntoCollection = function(collection, dataArray){
dataArray.forEach(function(item){
collection.insert(item);
});
};
if (Stuff.find().count() === 0) {
var array = [
{
// document1
},{
// document2
}
];
insertIntoCollection(Stuff, array);
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.