Mic*_*sov 5 bigdata mongodb node.js
我需要从nodejs在mongodb中插入一大堆对象(大约1.5-2百万).我怎样才能改善插入?
这是我的代码:
var sizeOfArray = arrayOfObjects.length; //sizeOfArray about 1.5-2 millions
for(var i = 0; i < sizeOfResult; ++i) {
newKey = {
field_1: result[i][1],
field_2: result[i][2],
field_3: result[i][3]
};
collection.insert(newKey, function(err, data) {
if (err) {
log.error('Error insert: ' + err);
}
});
}
Run Code Online (Sandbox Code Playgroud)
Chr*_*n P 16
您可以使用批量插入.
有两种类型的批量操作:
- 订购批量操作.这些操作按顺序执行所有操作,并在第一次写入错误时执行错误输出.
- 无序批量操作.这些操作并行执行所有操作并聚合所有错误.无序批量操作不保证执行顺序.
所以你可以这样做:
var MongoClient = require('mongodb').MongoClient;
MongoClient.connect("mongodb://myserver:27017/test", function(err, db) {
// Get the collection
var col = db.collection('myColl');
// Initialize the Ordered Batch
// You can use initializeUnorderedBulkOp to initialize Unordered Batch
var batch = col.initializeOrderedBulkOp();
for (var i = 0; i < sizeOfResult; ++i) {
var newKey = {
field_1: result[i][1],
field_2: result[i][2],
field_3: result[i][3]
};
batch.insert(newKey);
}
// Execute the operations
batch.execute(function(err, result) {
console.dir(err);
console.dir(result);
db.close();
});
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7649 次 |
| 最近记录: |