我遇到了mongo的一个奇怪行为,我想澄清一下......
我的要求很简单:我想在集合中获取单个文档的大小。
我找到了两种可能的解决方案:
在这里,我提供一些我执行测试的代码:
我创建了新的数据库'test'并输入了只有一个属性的简单文档:type:"auto"
db.test.insert({type:"auto"})
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
}
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"}))
这将返回特定文档的正确大小(以字节为单位)。
https://stackoverflow.com/questions/22008822/