V tomto článku uvádím 5 způsobů, které můžete použít ke kontrole velikosti kolekce MongoDB při použití prostředí mongo.
dataSize()
Metoda
Pravděpodobně nejrychlejší a nejjednodušší způsob, jak zkontrolovat velikost kolekce MongoDB, je použít db.collection.dataSize()
metoda. Tato metoda vrací velikost kolekce v bajtech.
Chcete-li tuto metodu zavolat, jednoduše nahraďte collection
s názvem sbírky, kterou chcete zkontrolovat.
Příklad:
db.posts.dataSize()
Výsledek:
3012
Tento příklad kontroluje velikost kolekce nazvané posts
. Je to jen malá sbírka s hrstkou malých dokumentů, takže velikost je pouze 3012 bajtů.
totalSize()
Metoda
db.collection.totalSize()
metoda vrací celkovou velikost v bajtech dat v kolekci plus velikost každého indexu v kolekci.
Proto použijte tuto metodu, pokud chcete znát celkovou velikost, která zahrnuje všechny indexy.
Příklad:
db.posts.totalSize()
Výsledek:
114688
Toto je stejná sbírka, proti které jsme spustili předchozí příklad. posts
kolekce má tři indexy (včetně toho na _id
pole) a můžeme vidět, že celková velikost je výrazně vyšší než velikost kolekce bez indexů.
stats()
Metoda
Pokud potřebujete více než jen velikost kolekce, můžete zkusit db.collection.stats()
metoda.
Tato metoda vrací statistiky o kolekci (včetně její velikosti).
Příklad:
db.posts.stats()
Výsledek (částečný):
{
"ns" : "krankykranes.posts",
"size" : 3012,
"count" : 27,
"avgObjSize" : 111,
"storageSize" : 36864,
"freeStorageSize" : 16384,
"capped" : false,
"wiredTiger" : {
"metadata" : {
"formatVersion" : 1
},
...
Tato metoda vrací mnoho dat, takže zde vracím pouze první malou část. Velikost kolekce je uvedena v horní části výsledků v poli size
pole.
Ve výchozím nastavení tato metoda vrací data o velikosti v bajtech. Pokud chcete, můžete jej změnit tak, aby se uváděl v kilobajtech. K tomu použijte scale
parametr s hodnotou 1024
.
Příklad:
db.posts.stats( { scale: 1024 } )
Výsledek (částečný):
{
"ns" : "krankykranes.posts",
"size" : 2,
"count" : 27,
"avgObjSize" : 111,
"storageSize" : 36,
"freeStorageSize" : 16,
"capped" : false,
"wiredTiger" : {
"metadata" : {
"formatVersion" : 1
},
...
db.collection.stats()
metoda poskytuje obal kolem collStats
příkaz (níže).
Položka collStats
Příkaz
Jak již bylo zmíněno, db.collection.stats()
metoda je obal pro collStats
diagnostický příkaz. Tento příkaz vrací statistiky o kolekci (včetně její velikosti).
Příklad:
db.runCommand( { collStats : "posts", scale: 1 } )
Výsledek (částečný):
{
"ns" : "krankykranes.posts",
"size" : 3012,
"count" : 27,
"avgObjSize" : 111,
"storageSize" : 36864,
"freeStorageSize" : 16384,
"capped" : false,
"wiredTiger" : {
"metadata" : {
"formatVersion" : 1
},
...
Stejně jako u stats()
Tento příkaz vrací spoustu dat, takže jsem právě sebral nějaké věci shora.
Všimněte si, že jsem uvedl scale
z 1
v tomto příkladu vrátit data o velikosti v bajtech. Můžeme to změnit na 1024
vrátit ji v kilobajtech.
Příklad:
db.runCommand( { collStats : "posts", scale: 1024 } )
Výsledek (částečný):
{
"ns" : "krankykranes.posts",
"size" : 2,
"count" : 27,
"avgObjSize" : 111,
"storageSize" : 36,
"freeStorageSize" : 16,
"capped" : false,
"wiredTiger" : {
"metadata" : {
"formatVersion" : 1
},
...
$bsonSize
Operátor
$bsonSize
Operátor agregačního kanálu byl zaveden v MongoDB 4.4 za účelem vrácení velikosti dokumentu BSON.
Můžete použít $bsonSize
vrátit celkovou velikost všech dokumentů v kolekci tím, že ji zkombinujete se $group
a $sum
operátory.
Příklad:
db.posts.aggregate([
{
$group: {
"_id": null,
"rootSize": { $sum: { $bsonSize: "$$ROOT" } }
}
}
])
Výsledek:
{ "_id" : null, "rootSize" : 3012 }