我正在输入数据到mongodb但突然遇到这个错误。不知道如何解决这个问题。这是因为超出了最大尺寸?。如果没有那么为什么我会收到这个错误?。任何人都知道如何解决这个问题?以下是我遇到的错误
Exception in thread "main" com.mongodb.MongoInternalException: DBObject of size 163745644 is over Max BSON size 16777216
我知道我的数据集很大......但还有其他解决方案吗?
答案 0 :(得分:3)
您要插入的文档超过了最大BSON文档大小,即 16 MB
以下是参考文档:http://docs.mongodb.org/manual/reference/limits/
要存储大于最大尺寸的文档,MongoDB会提供 GridFS API。
mongofiles实用程序可以操作存储的文件 从命令行在GridFS对象中的MongoDB实例。它是 特别有用,因为它提供了存储对象之间的接口 在您的文件系统和GridFS中。
参考:MongoFiles
答案 1 :(得分:2)
要插入大小超过16MB的文档,您需要使用MongoDB的GRIDFS。 GridFS是mongoDB上的一个抽象层,它以块的形式划分数据(默认为255K)。当你使用java时,它也很容易使用java驱动程序。我在mongoDB中插入一个弹性搜索jar(大小为20mb)。示例代码:
MongoClient mongo = new MongoClient("localhost", 27017);
DB db = mongo.getDB("testDB");
String newFileName = "elasticsearch-Jar";
File imageFile = new File("/home/impadmin/elasticsearch-1.4.2.tar.gz");
GridFS gfs = new GridFS(db);
//Insertion
GridFSInputFile inputFile = gfs.createFile(imageFile);
inputFile.setFilename(newFileName);
inputFile.put("name", "devender");
inputFile.put("age", 23);
inputFile.save();
//Fetch back
GridFSDBFile outputFile = gfs.findOne(newFileName);
了解更多here。
如果你想直接使用mongoclient插入,你将使用其他答案中提到的mongofiles。
希望有帮助.....:)