我試圖使用插入帶有一個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) –