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];
我正在处理 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];