- java/
- MongoDB Java驱动程序在存储大于16MB的数据时通常会给出BSonMaximumSizeExceedeException,但有时会给出MongoWriteException
MongoDB Java驱动程序在存储大于16MB的数据时通常会给出BSonMaximumSizeExceedeException,但有时会给出MongoWriteException
MongoDB Java驱动程序在存储大于16MB的数据时通常会给出BSonMaximumSizeExceedeException,但有时会给出MongoWriteException,java,mongodb,mongodb-java,Java,Mongodb,Mongodb Java,我的代码按以下方式工作
我有一个保存在MongoDB集合中的文档,我获取该文档。
2在Java层更新此文档,在数组类型的键中添加值
然后使用MongoCollection.java类的replaceOne()函数(upsert为true),将_id作为过滤器传递,将完整对象作为要替换的对象传递
如果此文档Bson大小大于16MB,则会给出BSonMaximumSizeExceedeException,我将捕获它,并在catch块中将此文档保存在GridFS中
如果此文档的大小小于16MB,则会被
我的代码按以下方式工作
我有一个保存在MongoDB集合中的文档,我获取该文档。
2在Java层更新此文档,在数组类型的键中添加值
然后使用MongoCollection.java类的replaceOne()函数(upsert为true),将_id作为过滤器传递,将完整对象作为要替换的对象传递
如果此文档Bson大小大于16MB,则会给出BSonMaximumSizeExceedeException,我将捕获它,并在catch块中将此文档保存在GridFS中
如果此文档的大小小于16MB,则会被替换
所以在第4步中,我期望99%的时间得到BsonMaximumSizeExceedeException,但这一到两次我得到了MongoWriteException
MongoWriteException的描述也类似于BSonMaximumSizeExcepedException
例外情况是这样的
原因:com.mongodb.MongoWriteException:写入结果不可用于::原因::BSONObj大小:16793731(0x1004083)无效。大小必须介于0和16793600(16MB)之间
有人能解释为什么我没有得到BsonMaximumSizeExceedeException,而是得到MongoWriteException吗
或者在Java层是否有其他方法可以知道我的文档已增长到16MB以上?Kishore Babu Diyyana
BSON文档的最大大小为16 MB
最大文档大小有助于确保单个文档不会使用过多的RAM或在传输过程中使用过多的带宽。为了存储大于最大大小的文档,MongoDB提供了GridFS API。有关GridFS的更多信息,请参阅mongofiles和驱动程序文档。Kishore Babu Diyyana
BSON文档的最大大小为16 MB
最大文档大小有助于确保单个文档不会使用过多的RAM或在传输过程中使用过多的带宽。为了存储大于最大大小的文档,MongoDB提供了GridFS API。有关GridFS的更多信息,请参阅mongofiles和驱动程序文档。请参阅第二个答案。它解释了如何在编写BSON对象之前获取其大小。我有一个java对象,根据注释获取大小,我必须首先转换为BsonDocument,然后转换为Json文档。我认为对于这样一个简单的任务来说,这是一个很大的转变。还有其他可用的wat吗?参见第二个答案。它解释了如何在编写BSON对象之前获取其大小。我有一个java对象,根据注释获取大小,我必须首先转换为BsonDocument,然后转换为Json文档。我认为对于这样一个简单的任务来说,这是一个很大的转变。还有其他可用的wat吗?