【发布时间】:2012-09-21 09:10:27
【问题描述】:
考虑将来切换到 DynamoDB,但要确保我的文档小于 1KB,因为它们按 KB 收费。有没有一种快速的方法可以知道一个文档在一个集合中有多大?
【问题讨论】:
考虑将来切换到 DynamoDB,但要确保我的文档小于 1KB,因为它们按 KB 收费。有没有一种快速的方法可以知道一个文档在一个集合中有多大?
【问题讨论】:
作为一般指南,您可以使用集合stats() 报告的avgObjSize 值检查集合中文档的平均大小collname:
db.collname.stats()
要查找和计算大型文档,您可以使用类似于:
var maxSize = 1024;
var bigDocs = 0;
db.collname.find().forEach(
function (doc) {
var docSize = Object.bsonsize(doc);
if (docSize >= maxSize) {
bigDocs++;
print(doc._id + ' is ' + docSize + ' bytes');
}
}
)
print("Found " + bigDocs + " documents bigger than " + maxSize + " bytes")
请注意,这两个示例都使用 MongoDB BSON 表示,这与在其他数据库中表示相同数据所需的大小不同。
【讨论】:
The maximum BSON document size is 16 megabytes.