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