Jam*_*een 1 javascript mongodb node.js meteor
我需要在Meteor中一次创建2000个文档.我知道我可以使用
for (i=0; i<2000; i++) {
CollectionName.insert({});
}
Run Code Online (Sandbox Code Playgroud)
但我希望Meteor中有一个批量创建功能.如何以最快的方式插入这2000行?
Meteor本身并不支持这一点.但是,它确实允许您访问Mongodb驱动程序,该驱动程序本身可以执行批量插入.
您只能在服务器上执行此操作:
var x = new Mongo.Collection("xxx");
x.rawCollection.insert([doc1, doc2, doc3...], function(err, result) {
console.log(err, result)
});
Run Code Online (Sandbox Code Playgroud)
或者使用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 } );
Run Code Online (Sandbox Code Playgroud)
笔记:
扩展@ 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)();
Run Code Online (Sandbox Code Playgroud)