I denne artikel præsenterer jeg 5 måder, du kan bruge til at kontrollere størrelsen af en MongoDB-samling, når du bruger mongo-skallen.
dataSize()
Metode
Den sandsynligvis hurtigste og nemmeste måde at kontrollere størrelsen af en MongoDB-samling på er at bruge db.collection.dataSize()
metode. Denne metode returnerer størrelsen af samlingen i bytes.
For at kalde denne metode skal du blot erstatte collection
med navnet på den samling, du gerne vil tjekke.
Eksempel:
db.posts.dataSize()
Resultat:
3012
Dette eksempel kontrollerer størrelsen af en samling kaldet posts
. Det er kun en lille samling med en håndfuld små dokumenter, så størrelsen er kun 3012 bytes.
totalSize()
Metode
db.collection.totalSize()
metoden returnerer den samlede størrelse i bytes af dataene i samlingen plus størrelsen af hvert indeks i samlingen.
Brug derfor denne metode, hvis du vil vide den samlede størrelse, der inkluderer alle indekser.
Eksempel:
db.posts.totalSize()
Resultat:
114688
Dette er den samme samling, som vi kørte det forrige eksempel imod. posts
samlingen har tre indekser (inklusive det på _id
felt), og vi kan se, at den samlede størrelse er væsentligt højere end samlingsstørrelsen uden indekserne.
stats()
Metode
Hvis du har brug for mere end blot samlingens størrelse, kan du prøve db.collection.stats()
metode.
Denne metode returnerer statistik om samlingen (inklusive dens størrelse).
Eksempel:
db.posts.stats()
Resultat (delvis):
{
"ns" : "krankykranes.posts",
"size" : 3012,
"count" : 27,
"avgObjSize" : 111,
"storageSize" : 36864,
"freeStorageSize" : 16384,
"capped" : false,
"wiredTiger" : {
"metadata" : {
"formatVersion" : 1
},
...
Denne metode returnerer en masse data, så jeg returnerer kun den første lille del her. Samlingens størrelse er angivet nær toppen af resultaterne i size
felt.
Som standard returnerer denne metode størrelsesdata i bytes. Du kan ændre det, så det rapporterer i kilobyte, hvis du foretrækker det. For at gøre dette skal du bruge scale
parameter med en værdi på 1024
.
Eksempel:
db.posts.stats( { scale: 1024 } )
Resultat (delvis):
{
"ns" : "krankykranes.posts",
"size" : 2,
"count" : 27,
"avgObjSize" : 111,
"storageSize" : 36,
"freeStorageSize" : 16,
"capped" : false,
"wiredTiger" : {
"metadata" : {
"formatVersion" : 1
},
...
db.collection.stats()
metoden giver en indpakning omkring collStats
kommando (nedenfor).
collStats
Kommando
Som nævnt er db.collection.stats()
metoden er en indpakning for collStats
diagnostisk kommando. Denne kommando returnerer statistik om samlingen (inklusive dens størrelse).
Eksempel:
db.runCommand( { collStats : "posts", scale: 1 } )
Resultat (delvis):
{
"ns" : "krankykranes.posts",
"size" : 3012,
"count" : 27,
"avgObjSize" : 111,
"storageSize" : 36864,
"freeStorageSize" : 16384,
"capped" : false,
"wiredTiger" : {
"metadata" : {
"formatVersion" : 1
},
...
Som med stats()
metode, returnerer denne kommando en masse data, så jeg har lige fået fat i nogle ting fra toppen.
Bemærk, at jeg har angivet en scale
af 1
i dette eksempel for at returnere størrelsesdata i bytes. Vi kan ændre det til 1024
for at returnere den i kilobyte.
Eksempel:
db.runCommand( { collStats : "posts", scale: 1024 } )
Resultat (delvis):
{
"ns" : "krankykranes.posts",
"size" : 2,
"count" : 27,
"avgObjSize" : 111,
"storageSize" : 36,
"freeStorageSize" : 16,
"capped" : false,
"wiredTiger" : {
"metadata" : {
"formatVersion" : 1
},
...
$bsonSize
Operatør
$bsonSize
aggregeringspipeline-operatør blev introduceret i MongoDB 4.4 med det formål at returnere størrelsen af et BSON-dokument.
Du kan bruge $bsonSize
at returnere den samlede størrelse af alle dokumenter i samlingen ved at kombinere den med $group
og $sum
operatører.
Eksempel:
db.posts.aggregate([
{
$group: {
"_id": null,
"rootSize": { $sum: { $bsonSize: "$$ROOT" } }
}
}
])
Resultat:
{ "_id" : null, "rootSize" : 3012 }