如何在Mongodb中获取单个文档的大小?

问题描述 投票:79回答:5

我遇到了mongo的奇怪行为,我想澄清一下...我的要求很简单:我希望在集合中获得单个文档的大小。我找到了两种可能的解决方案:

  • Object.bsonsize-一些应以字节为单位返回大小的JavaScript方法
  • db.collection.stats()-其中有一行'avgObjSize',可在数据上生成一些“聚合的”(平均)大小视图。它仅表示单个文档的平均大小。
  • 当我仅使用一个文档创建测试集合时,两个函数都返回不同的值。这怎么可能?是否存在其他获取mongo文档大小的方法?

[这里,我提供一些我要进行测试的代码:

  1. 我创建了新的数据库'test'并输入仅具有一个属性的简单文档:type:“ auto”

    db.test.insert({type:"auto"})
    
  2. stats()函数调用的输出:db.test.stats()

    { 
      "ns" : "test.test",
      "count" : 1,
      "size" : 40,
      "avgObjSize" : 40,
      "storageSize" : 4096,
      "numExtents" : 1,
      "nindexes" : 1,
      "lastExtentSize" : 4096,
      "paddingFactor" : 1,
      "systemFlags" : 1,
      "userFlags" : 0,
      "totalIndexSize" : 8176,
      "indexSizes" : {
            "_id_" : 8176
    },
    "ok" : 1
    

    }

  3. bsonsize函数调用的输出:Object.bsonsize(db.test.find({test:“ auto”}))] >>

    481
    

我遇到了mongo的奇怪行为,我想澄清一下...我的要求很简单:我希望在集合中得到单个文档的大小。我发现了两个可能的...

javascript mongodb document objectid objectsize
5个回答
169
投票

在上一个Object.bsonsize()调用中,Mongodb返回了光标的大小,而不是文档的大小。


30
投票

由于Record Padding机制,文档将在集合中占用的有效空间将大于文档的大小。


28
投票
我建议使用此脚本来获取实际大小。

0
投票
Object.bsonsize(db.test.findOne({type:“ auto”}))它以字节为单位。

0
投票
使用mongodb

4.4

© www.soinside.com 2019 - 2024. All rights reserved.