使用java将大型BasicDBObject存储到mongodb时出现异常

时间:2011-03-11 07:52:36

标签: java mongodb object store nosql

我想在mongoDB中存储大对象但是在持久化大对象时我遇到错误(byte []可能> 5MB)。是否可以以这种方式存储数据?在DB上调用“insert”时,我总是得到一个异常“java.lang.IllegalArgumentException:object too big:4821537”...

段:

private byte[] persistObject(String id, byte[] value){

    BasicDBObject doc = new BasicDBObject();
    doc.append("id", id);
    doc.append("value", value); // may be really huge! > 5MB of size

    try {
        getObjectCollection().save(doc);
    } catch (MongoException e) {
        e.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    }
    return value;
}

堆栈跟踪:

java.lang.IllegalArgumentException: object too big: 4821537
at com.mongodb.DBApiLayer$MyCollection.insert(DBApiLayer.java:217)
at com.mongodb.DBApiLayer$MyCollection.insert(DBApiLayer.java:180)
at com.mongodb.DBCollection.insert(DBCollection.java:72)
at com.mongodb.DBCollection.save(DBCollection.java:537)
at com.mongodb.DBCollection.save(DBCollection.java:517)

感谢您的帮助/提示:)

1 个答案:

答案 0 :(得分:2)

我认为你的mongodb版本是1.6.MongoDB中的BSON对象大小有限(4MB)。请将mongodb版本升级到1.7+。 v1.7 / 1.8中16MB,未来更高限制。