为什么24 MB的CSV数据在MongoDB集合中变为230 MB?

为什么24 MB的CSV数据在MongoDB集合中变为230 MB?,mongodb,csv,meteor,Mongodb,Csv,Meteor,我的Meteor应用程序获取一个CSV文件,用Baby Parse(服务器的Papa Parse)解析它,然后将数据插入MongoDB集合 每个CSV行都作为文档插入。24MB CSV文件包含约900000行;因此,藏品中约有900000份文件。每个文档有5个字段,包括文档的唯一id 当我使用dataSize()获取集合大小时,我收到了号码230172976;如果我没弄错的话,这个数字是以字节为单位的;因此它是230MB 为什么会出现如此巨大的增长?如何修复此问题?这是因为该值通过包含记录返回。

我的Meteor应用程序获取一个CSV文件,用Baby Parse(服务器的Papa Parse)解析它,然后将数据插入MongoDB集合

每个CSV行都作为文档插入。24MB CSV文件包含约900000行;因此,藏品中约有900000份文件。每个文档有5个字段,包括文档的唯一id

当我使用
dataSize()
获取集合大小时,我收到了号码230172976;如果我没弄错的话,这个数字是以字节为单位的;因此它是230MB


为什么会出现如此巨大的增长?如何修复此问题?

这是因为该值通过包含记录返回。另外请注意,如果您的文档没有
\u id
字段,则会添加该字段,并且每个
\u id
字段都是
12字节
。你可能想读书

如何解决此问题:

使用带有noPadding标志的命令或带有选项的方法。但是你不应该这样做,因为正如在

对于工作负载没有导致文档增长的更新操作的集合,例如工作负载为“仅插入”的集合,仅将noPadding设置为true

正如Pete Garafano在下文中提到的,这仅适用于:;这是MongoDB 3.0和所有早期版本中的默认存储引擎


MongoDB 3.2使用,您需要更改默认存储引擎,以便在中使用该选项或使用
--storageEngine
选项。

请提供示例行以进行透明解释。请注意,此选项仅适用于MMAPv1。在MongoDB 3.2中,WiredTiger是默认的存储引擎。