2015-04-06 65 views
1

我正在输入数据到mongodb,但突然遇到此错误。不知道如何解决这个。这是由于最大尺寸超过?如果没有那么为什么我得到这个错误?有人知道怎么修这个东西吗?下面是我遇到的错误MongoInternalException当插入到mongoDB

Exception in thread "main" com.mongodb.MongoInternalException: DBObject of size 163745644 is over Max BSON size 16777216 

我知道我的数据集很大......但是有没有其他解决方案?

回答

3

您要插入时超过最大BSON文档大小即16 MB

这里的文件是参考文档:http://docs.mongodb.org/manual/reference/limits/

存储文件超过最大大小,MongoDB的提供GridFS API。

mongofiles实用程序可以从命令行操纵GridFS对象中存储在您的MongoDB实例中的文件 。它是 特别有用,因为它提供了文件系统中存储的对象 与GridFS之间的接口。

编号:MongoFiles

+0

@rahulroc ....感谢您的答复...但我的数据是如此之大......所以无论如何我得将其插入。 ...要尽量减少数据大小或有任何其他方式? – 2015-04-06 10:59:50

+0

我已经更新了我的答案,请检查 – Rahul 2015-04-06 11:00:34

+0

感谢您的建议...我会尝试 – 2015-04-06 11:16:10

2

对于插入尺寸比你需要的MongoDB使用GridFS的16MB更大的文件。 GridFS是mongoDB上的一个抽象层,它将数据分块(默认为255K)。当你使用java时,它也很容易与java驱动一起使用。我在mongoDB中插入一个elasticsearch 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。

希望帮助..... :)

+0

我一定会检查此...谢谢 – 2015-04-06 11:15:53

+0

欢迎..让我们知道如果您面临任何问题... ... .. – 2015-04-06 11:17:38