Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb BSON表示是否缩小?_Mongodb_Bson - Fatal编程技术网

Mongodb BSON表示是否缩小?

Mongodb BSON表示是否缩小?,mongodb,bson,Mongodb,Bson,我正在使用mongo,我保存的一个文档超过了最大16mb。我想知道缩小结构是否能在这方面有所帮助。这就是为什么我要问这个题目。 如果bson表示已经缩小了文档,那么我这边的另一个尝试对任何事情都没有帮助。bson已经是一种高度紧凑的格式,而且WiredTiger引擎在页面级别而不是文档级别压缩数据 如果您的文档大小达到16MB限制,您可能需要拆分文档或重新设计数据库。如果您的文档大小在缩小后仍超过16MB,您可以使用将该documnet拆分 根据MongoDB文件 GridFS是一种用于存储和检

我正在使用mongo,我保存的一个文档超过了最大16mb。我想知道缩小结构是否能在这方面有所帮助。这就是为什么我要问这个题目。
如果bson表示已经缩小了文档,那么我这边的另一个尝试对任何事情都没有帮助。

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


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

如果您的文档大小在缩小后仍超过16MB,您可以使用将该documnet拆分

根据MongoDB文件

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


希望这能有所帮助。

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字节。

文档键在BSON中消耗大量空间,因为它们是逐字存储的,因此,如果您可以对它们进行编码,您将节省大量字节。如果您的代码是这些数据的唯一读取器,那么就可以接受,这样就没有人需要记住这一点

const MY_INSANELY_LONG_OBJECT_PROPERTY_NAME = "a";

var thePropertyValue = myObject[MY_INSANELY_LONG_OBJECT_PROPERTY_NAME];

BSON文档非常紧凑,我不确定在不为MongoDB重新编写自己的数据存储的情况下如何进一步压缩它。如果您的文档超过了最大限制,我建议您重新访问文档结构。您可能应该重新访问您的数据模型。16Mb是很多。你在那一份文件里存储了什么?。另外,我不认为这会有帮助,但你使用的商店引擎是什么?应将wired tiger作为较新mongo版本中的默认存储引擎,并执行压缩。更多详情请参见此:@IshanSoni是的,我同意,我的问题更具针对性,以查看缩小的文档,就空间使用而言,表示相同结构相当于未缩小的文档。如果您的文档超过了16MB的最大限制,则您可以重新构造模型或使用“GridFS”。供参考:很好,做同样的测试,但我也看到了字段大小的增加!。。。也许缩小一个物体毕竟不是一个坏主意!(我是mongo的新手,不知道stats方法,它包含很多有用的信息:))。