是BSON表示缩小?

时间:2016-07-04 19:55:55

标签: mongodb bson

我正在使用mongo,我保存的文件之一超过了最大16mb。我想知道缩小结构是否有助于这方面。这就是为什么我对标题有疑问。 如果bson表示已经缩小了文档,那么我的另一个尝试就不会有任何帮助。

4 个答案:

答案 0 :(得分:1)

如果您的文档大小在缩小之后变得超过16MB,您可以使用GridFS来破坏该documnet。

根据MongoDB文档,

  

GridFS是用于存储和检索超过BSON文档大小限制为16 MB的文件的规范。

希望这会有所帮助..

答案 1 :(得分:1)

MongoDB将数据存储在BSON表示中,保存字段名称和内容。总对象大小取决于字段的长度以及字段的内容。如果您愿意缩写字段名称,那么您可以缩小文档。

您可以通过插入带有长字段和短字段名称的文档来快速检查:

> db.test.insert({abcde:1})
> db.test.stats()
{
  "ns": "test.test",
  "count": 1,
  "size": 37,
  "avgObjSize": 37,
  ...

如果您可以缩写字段名称,则可以减少对象大小:

> db.test2.insert({a:1})
> db.test2.stats()
{
  "ns": "test.test2",
  "count": 1,
  "size": 33,
  "avgObjSize": 33,
  ...

从上面的两个示例中,将字段名称从abcde缩短为a导致对象大小减少:37个字节对33个字节,使用较短的字段可节省4个字节名。

答案 2 :(得分:1)

文档键占用BSON中的大量空间,因为它们是逐字存储的,所以如果你可以对它们进行编码,你将节省大量的字节。如果您的代码是这些数据的唯一读者,那么任何人都不需要记住

,这是可以接受的
const MY_INSANELY_LONG_OBJECT_PROPERTY_NAME = "a";

var thePropertyValue = myObject[MY_INSANELY_LONG_OBJECT_PROPERTY_NAME];

答案 3 :(得分:0)

BSON已经是一种高度紧凑的格式,而且WiredTiger引擎在页面级压缩数据,而不是文档级别。

如果您的文档大小达到16MB限制,则可能需要拆分文档或重新设计数据库。