我试图使用插入带有一个collection.insert
呼叫100K左右的文件标准Mongo DB driver for Node.JS:Node.JS Mongo DB驱动程序没有拆分批量插入?
var MongoClient = require('mongodb').MongoClient;
MongoClient.connect('mongodb://localhost/testdb', function(err, db) {
var collection = db.collection('testcollection');
var docs = [];
var doc = {
str: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam sit amet urna consequat quam pharetra sagittis vitae at nulla. Suspendisse non felis sollicitudin, condimentum urna eu, congue massa. Nam arcu dui, sodales eget auctor nec, ullamcorper in turpis. Praesent sit amet purus mi. Mauris egestas sapien magna, a mattis tellus luctus et. Suspendisse potenti. Nam posuere neque at vulputate ornare. Nunc mollis lorem est, at porttitor augue sodales sed. Ut dui sapien, fermentum eu laoreet sed, sodales et augue. Aliquam erat volutpat.'
};
for (var i = 0; i < 100000; i++) {
docs[i] = doc;
}
collection.insert(docs, function(err) {
throw err;
});
});
不过,我得到以下错误:
/var/node/testproject/node_modules/mongodb/lib/mongodb/connection/base.js:242
throw message;
^
Error: Document exceeds maximum allowed bson size of 16777216 bytes
at InsertCommand.toBinary (/var/node/testproject/node_modules/mongodb/lib/mongodb/commands/insert_command.js:86:11)
at Connection.write (/var/node/testproject/node_modules/mongodb/lib/mongodb/connection/connection.js:230:42)
at __executeInsertCommand (/var/node/testproject/node_modules/mongodb/lib/mongodb/db.js:1857:14)
at Db._executeInsertCommand (/var/node/testproject/node_modules/mongodb/lib/mongodb/db.js:1930:5)
at insertAll (/var/node/testproject/node_modules/mongodb/lib/mongodb/collection/core.js:205:13)
at Collection.insert (/var/node/testproject/node_modules/mongodb/lib/mongodb/collection/core.js:35:3)
at /var/node/testproject/dbtest.js:15:16
at /var/node/testproject/node_modules/mongodb/lib/mongodb/mongo_client.js:431:11
at process._tickCallback (node.js:664:11)
由于单个文件明显小超过16 MB并给出堆栈跟踪,看起来驱动程序不会自动分割命令。我如何解决这个问题,最好是自己编写代码?
你可以显示你的实际调用。当然不是全部,而是你如何做这件事的总结。 –
@NeilLunn我添加了一个简单的例子来说明问题。 – Overv
Thx。可能不是这里的答案。但检查你的潜水员版本,并确保它是最新的。然后我会添加一些代码来检查插入前的字节大小。当然还是提交给JIRA。另外,如果你能够,你能否对照2.6 RC进行测试。使用runCommand表单[here](http://docs.mongodb.org/master/reference/command/insert/#dbcmd.insert) –