MongoDB对象大小插入问题C#

Posted

技术标签:

【中文标题】MongoDB对象大小插入问题C#【英文标题】:MongoDB object size insertion issue C# 【发布时间】:2022-01-08 23:01:48 【问题描述】:

我的问题是我们正在尝试将文档插入 MongoDB,它似乎超过了 16 MB 的大小限制。现在,我们可以调试并查看聚合到完整对象本身的内容,但我不知道如何查看嵌套文档的哪一部分相当于 C# 中的大文件大小。

有谁知道实现这一目标的方法吗?

提前致谢。

/每

【问题讨论】:

这不会回答您的问题,但是,如果您知道您的文档将是“大”的,那么不要使用 MongoDB 来存储它。将对象数据存储为系统文件和可单独请求的 mongo 存储文件位置。 【参考方案1】:

Mongo 提供了一种处理大于 16 MB 的文档的方法,称为 gridfs,但有一些限制。简而言之,它将您的输入文档分成多个块并管理它的工作。 要在序列化后获取实体的大小,可以试试这个:

var byteArrayLength = new TestEntity().ToBson().Length;

【讨论】:

【参考方案2】:

MongoDB 将所有数据存储为 JSON 文档。并且 16MB 的限制被算作一个修剪过的 JSON 文件,没有不必要的缩进。

要获得相同的结果,请使用 MongoDB 序列化程序将对象解析为 JSON,或使用 Json.NET 等外部序列化程序。

然后检查此 JSON 文档或对其进行一些计算,以了解文档的每个部分中有多少个字符,并根据您的架构采取相应措施,以将此文档减少到限制以下或...

...不要使用 MongoDB 来存储它。将对象数据存储为系统文件和可单独请求的 mongo 存储文件位置。

【讨论】:

以上是关于MongoDB对象大小插入问题C#的主要内容,如果未能解决你的问题,请参考以下文章

更新/插入子文档时的 mongodb 性能

C# 在运行时检查 silverlight 对象大小

如何从 C# 中的二维对象数组中取回大小?

C#如何从Tao库中获取OpenGL中生成的对象的大小

关于WORD2007 中插入对象单个文件大小限制 测试

用c#在excel中插入图片和设置表格宽度