mongodb - MongoDB:上限集合中的最大文档数
问题描述
我正在使用一个上限集合,我将最大大小定义为512000000
(512MB)
stats() 说(在 1 次插入之后)size:55, storageSize:16384
:。
假设所有文档的大小相同,我可以存储多少个文档?
是512000000 / 55
还是512000000 / 16384
?
解决方案
对于有上限的集合,它是maxSize / avgObjSize
. 如果您的文档大小相同,那么它实际上是maxSize / size
.
您可以使用更小更易于管理的数字来验证这一点:
// create a capped collection with maxSize of 1024
> db.createCollection('test', {capped: true, size: 1024})
// insert one document to get an initial size
> db.test.insert({a:0})
> db.test.stats().size
33
// with similar documents, the collection should contain 1024/33 ~= 31 documents
// so let's insert 100 to make sure it's full
> for(i=1; i<100; i++) { db.test.insert({a:i}) }
> db.test.stats()
{
"ns" : "test.test",
"size" : 1023,
"count" : 31,
"avgObjSize" : 33,
"storageSize" : 36864,
"capped" : true,
"max" : -1,
"maxSize" : 1024,
....
所以从上面的实验来看count
,即使我们插入了 100 个文档,也是 31 个。
使用您的数字,您的上限集合中的最大文档数将为 512000000 / 55 ~= 9,309,090 个文档。
推荐阅读
- firebase - Flutter - Admob - 仅在一页上显示横幅
- java - 如何让这个程序返回小数点后的数字?
- android - 无法将wsl2中的adb连接到windows adb服务器
- multithreading - 在 Kotlin 中,一个线程一次只能运行一个协程?
- php - 在 dokan 中为 Woocommerce 产品集成自定义复选框
- react-native - react-native-picker-select:项目构造?
- c++ - 为什么不必使用 strcpy 和 strlen 取消引用指针?
- android - 在 onCreate() 中的 bindService() 之后不调用 onBind() 和 onServiceConnected()
- javascript - innerHTML 放在引号中,使我的行无法正常工作
- java - 构建数据库管理 Java 应用程序的正确方法是什么?