今天在新版本下进行MongoDB数据导入的时候,遇到了这样一个问题,例如使用如下命令:
mongoimport -d test -c profile users.dat
在之前使用过几次这样的导入方法都没有问题,但这次却提示:
2016-01-20T10:05:25.228+0100 connected to: localhost 2016-01-20T10:05:25.735+0100 error inserting documents: lost connection to server 2016-01-20T10:05:25.735+0100 Failed: lost connection to server 2016-01-20T10:05:25.735+0100 imported 0 documents
查看MongoDB的Log,发现出现异常的原因,如下:
2016-01-20T11:26:39.103+0800 I - [conn17] Assertion: 10334:BSONObj size: 33562755 (0x2002083) is invalid. Size must be between 0 and 16793600(16MB) First element: insert: "Profile"
搜索解决方案,发现这是mongo工具包在新版本下的小bug,mongorestore和mongoimport都有一样的问题,官方说明可以参考https://jira.mongodb.org/browse/TOOLS-939。
原因就是bulk write api,原来的api中批量写入的batch size最大是32MB,现在已经变为16MB了。在导入或还原数据的时候,指定选项 –batchSize=1000,指定一个较小的值即可,默认是10000。
参考: