要插入MongoDB:转换为BSON的文档大小是否会发生变化?

时间:2012-05-26 21:16:40

标签: mongodb bson

好的我是MongoDB的新手并且正在阅读一本关于它的书,有些人在说

  

"无法保存大于4MB的文档(转换为BSON时)   到数据库"

好的......文件上限为4MB?令我困惑的是他们在括号中说的话:(当转换为BSON时):那么当转换为BSON时,大小会发生变化吗?

因为稍后会说:

  

"为了让您知道4MB是多少, 战争和整个文本   和平 仅为3.14 MB"

什么?好的,现在我很困惑。帮我!

1 个答案:

答案 0 :(得分:2)

理论上,BSON文件还包含占用空间和一些开销的字段名称。通常,开销不超过几个字节。除了一些文档开销(几个字节),存储的每个值也有一些额外的存储字节。对于一个简单的字符串,它是额外的6个字节(1表示类型,4表示长度,1表示尾随\ 0字符)。您可以在bsonspec.org网站上看到开销。简单字符串本身的长度在“转换为BSON时”不会改变,但是增加长度等会使它变得更小。大多数驱动程序都有辅助函数来确定文档的大小。在PHP中你会这样做:

<?php
$document = array(
    '_id' => new MongoId(),
    'name' => 'Derick'
);
echo strlen(bson_encode($document)), "\n";
?>

在这种情况下打印39

此外,当前的文档限制为16 MB - 自书写完以来它已发生变化。