В тази статия представям 5 начина, които можете да използвате, за да проверите размера на колекция MongoDB, когато използвате mongo shell.
dataSize()
Метод
Вероятно най-бързият и лесен начин да проверите размера на колекция MongoDB е да използвате db.collection.dataSize()
метод. Този метод връща размера на колекцията в байтове.
За да извикате този метод, просто заменете collection
с името на колекцията, която искате да проверите.
Пример:
db.posts.dataSize()
Резултат:
3012
Този пример проверява размера на колекция, наречена posts
. Това е само малка колекция с шепа малки документи, така че размерът е само 3012 байта.
totalSize()
Метод
db.collection.totalSize()
методът връща общия размер в байтове на данните в колекцията плюс размера на всеки индекс в колекцията.
Затова използвайте този метод, ако искате да знаете общия размер, който включва всички индекси.
Пример:
db.posts.totalSize()
Резултат:
114688
Това е същата колекция, срещу която използвахме предишния пример. posts
колекцията има три индекса (включително този на _id
поле) и можем да видим, че общият размер е значително по-висок от размера на колекцията без индексите.
stats()
Метод
Ако имате нужда от повече от размера на колекцията, можете да опитате db.collection.stats()
метод.
Този метод връща статистически данни за колекцията (включително нейния размер).
Пример:
db.posts.stats()
Резултат (частичен):
{
"ns" : "krankykranes.posts",
"size" : 3012,
"count" : 27,
"avgObjSize" : 111,
"storageSize" : 36864,
"freeStorageSize" : 16384,
"capped" : false,
"wiredTiger" : {
"metadata" : {
"formatVersion" : 1
},
...
Този метод връща много данни, така че връщам само първата малка част тук. Размерът на колекцията е посочен в горната част на резултатите, в size
поле.
По подразбиране този метод връща данни за размера в байтове. Можете да го промените, така че да се отчита в килобайти, ако предпочитате. За да направите това, използвайте scale
параметър със стойност 1024
.
Пример:
db.posts.stats( { scale: 1024 } )
Резултат (частичен):
{
"ns" : "krankykranes.posts",
"size" : 2,
"count" : 27,
"avgObjSize" : 111,
"storageSize" : 36,
"freeStorageSize" : 16,
"capped" : false,
"wiredTiger" : {
"metadata" : {
"formatVersion" : 1
},
...
db.collection.stats()
методът предоставя обвивка около collStats
команда (по-долу).
collStats
Команда
Както споменахме, db.collection.stats()
методът е обвивка за collStats
диагностична команда. Тази команда връща статистически данни за колекцията (включително нейния размер).
Пример:
db.runCommand( { collStats : "posts", scale: 1 } )
Резултат (частичен):
{
"ns" : "krankykranes.posts",
"size" : 3012,
"count" : 27,
"avgObjSize" : 111,
"storageSize" : 36864,
"freeStorageSize" : 16384,
"capped" : false,
"wiredTiger" : {
"metadata" : {
"formatVersion" : 1
},
...
Както при stats()
метод, тази команда връща много данни, така че току-що грабнах някои неща отгоре.
Имайте предвид, че предоставих scale
от 1
в този пример за връщане на данни за размера в байтове. Можем да променим това на 1024
за да го върнете в килобайти.
Пример:
db.runCommand( { collStats : "posts", scale: 1024 } )
Резултат (частичен):
{
"ns" : "krankykranes.posts",
"size" : 2,
"count" : 27,
"avgObjSize" : 111,
"storageSize" : 36,
"freeStorageSize" : 16,
"capped" : false,
"wiredTiger" : {
"metadata" : {
"formatVersion" : 1
},
...
$bsonSize
Оператор
$bsonSize
Операторът на конвейер за агрегиране беше въведен в MongoDB 4.4 с цел връщане на размера на BSON документ.
Можете да използвате $bsonSize
за да върне общия размер на всички документи в колекцията, като го комбинирате с $group
и $sum
оператори.
Пример:
db.posts.aggregate([
{
$group: {
"_id": null,
"rootSize": { $sum: { $bsonSize: "$$ROOT" } }
}
}
])
Резултат:
{ "_id" : null, "rootSize" : 3012 }