javascript - Mongodb如何获取单个文档的大小?

标签 javascript mongodb document objectid objectsize

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

  • Object.bsonsize - 一些以字节为单位返回大小的 javascript 方法
  • db.collection.stats() - 有一行 'avgObjSize' 在数据上产生一些“聚合”(平均)大小 View 。它只是表示单个文档的平均大小。

  • 当我只用一个文档创建测试集合时,两个函数都返回不同的值。这怎么可能?
    是否存在其他方法来获取 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
    

最佳答案

在之前的Object.bsonsize()调用中,Mongodb返回的是游标的大小,而不是文档。

正确的方法是使用这个命令:

Object.bsonsize(db.test.findOne())

使用 findOne(),您可以为特定文档定义查询:

Object.bsonsize(db.test.findOne({type:"auto"}))

这将返回特定文档的正确大小(以字节为单位)。

关于javascript - Mongodb如何获取单个文档的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22008822/

相关文章:

javascript - 如何使用 Mongoose 进行分组/聚合?

javascript - 如何从 MongoDB 对象数组的原型(prototype)中删除属性?

javascript - Mongoose 和 Schema.Types.Mixed 的问题

python - 使用 Python 插入到具有唯一键的 MongoDB 集合

javascript - IE6 Try/Catch block 不适用于自定义 document.someFunction 调用

javascript - 如何在选择时在文本框中获取文件名(不像 c :/fake path/)

php - javascript 向 php 发送单向消息

java - 在 Liferay 文档库中授予权限

javascript - 我的 REST 调用不运行页面的 javascript

c++ - 如何将 RapidJSON 文档序列化为字符串?