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

使用java将大型BasicDBObject存储到mongodb时出现异常,java,mongodb,object,store,nosql,Java,Mongodb,Object,Store,Nosql,我想在mongoDB中存储大型对象,但在持久化大型对象时出错(字节[]可能大于5MB)。有可能以这种方式存储数据吗?在DB上调用“insert”时,我总是遇到一个异常“java.lang.IllegalArgumentException:对象太大:4821537” 片段: private byte[] persistObject(String id, byte[] value){ BasicDBObject doc = new BasicDBObject(); doc.appe

我想在mongoDB中存储大型对象,但在持久化大型对象时出错(字节[]可能大于5MB)。有可能以这种方式存储数据吗?在DB上调用“insert”时,我总是遇到一个异常“java.lang.IllegalArgumentException:对象太大: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)
Stacktrace:

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)

感谢您的帮助/提示:)

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

我的版本是db版本1.6.5,因为这是生产版本。我不确定我是否应该在我的项目中使用不稳定的开发构建。。。还有什么好的没有sql db的java接口的建议吗?我看到mongodb的jira.1.8 rc2已经发布了。它没有严重的bug。你现在可以试试。其他的建议是membase和redis。它们很稳定,性能也很好。我试过你提到的mongodb版本。它起作用了!但是您必须使用最新的java驱动程序(版本2.5)来存储大型对象。版本2.4不存储它们,也抛出异常。谢谢你的帮助!没关系~。最新的java驱动程序支持新的Mongo 1.8功能,比如高级结果后处理(替换、合并、减少、内联)。好消息~1.8的对象(bson)限制是什么?在哪里可以找到它们?为什么存在对象(bson)限制?