BSON 表示缩小了吗?

is BSON representation minified?

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

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

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

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

根据 MongoDB 文档,

GridFS is a specification for storing and retrieving files that exceed the BSON-document size limit of 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 字节,使用较短的字段名称。

文档键在 BSON 中占用了很多 space,因为它们是逐字存储的,所以如果你可以对它们进行编码,你将节省很多字节。如果您的代码是这些数据中唯一的 reader,那是可以接受的,这样就没有人需要记住

const MY_INSANELY_LONG_OBJECT_PROPERTY_NAME = "a";

var thePropertyValue = myObject[MY_INSANELY_LONG_OBJECT_PROPERTY_NAME];