I den här artikeln presenterar jag 5 sätt som du kan använda för att kontrollera storleken på en MongoDB-samling när du använder mongo-skalet.
dataSize()
Metod
Det förmodligen snabbaste och enklaste sättet att kontrollera storleken på en MongoDB-samling är att använda db.collection.dataSize()
metod. Denna metod returnerar storleken på samlingen i byte.
För att anropa den här metoden, ersätt helt enkelt collection
med namnet på samlingen som du vill kontrollera.
Exempel:
db.posts.dataSize()
Resultat:
3012
Det här exemplet kontrollerar storleken på en samling som heter posts
. Det är bara en liten samling med en handfull små dokument, så storleken är bara 3012 byte.
totalSize()
Metod
db.collection.totalSize()
metod returnerar den totala storleken i byte av data i samlingen plus storleken på varje index i samlingen.
Använd därför den här metoden om du vill veta den totala storleken som inkluderar alla index.
Exempel:
db.posts.totalSize()
Resultat:
114688
Det här är samma samling som vi körde det tidigare exemplet mot. posts
samlingen har tre index (inklusive det på _id
). fältet), och vi kan se att den totala storleken är betydligt högre än samlingsstorleken utan indexen.
stats()
Metod
Om du behöver mer än bara samlingsstorleken kan du prova db.collection.stats()
metod.
Denna metod returnerar statistik om samlingen (inklusive dess storlek).
Exempel:
db.posts.stats()
Resultat (delvis):
{
"ns" : "krankykranes.posts",
"size" : 3012,
"count" : 27,
"avgObjSize" : 111,
"storageSize" : 36864,
"freeStorageSize" : 16384,
"capped" : false,
"wiredTiger" : {
"metadata" : {
"formatVersion" : 1
},
...
Den här metoden returnerar mycket data, så jag returnerar bara den första lilla delen här. Samlingsstorleken listas nära toppen av resultaten, i size
fältet.
Som standard returnerar denna metod storleksdata i byte. Du kan ändra det så att det rapporterar i kilobyte om du föredrar det. För att göra detta, använd scale
parameter med värdet 1024
.
Exempel:
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 tillhandahåller ett omslag runt collStats
kommando (nedan).
collStats
Kommando
Som nämnts, db.collection.stats()
metoden är ett omslag för collStats
diagnostiskt kommando. Detta kommando returnerar statistik om samlingen (inklusive dess storlek).
Exempel:
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()
metod, returnerar det här kommandot mycket data, så jag har precis tagit några saker från toppen.
Observera att jag angav en scale
av 1
i det här exemplet för att returnera storleksdata i byte. Vi kan ändra det till 1024
för att returnera den i kilobyte.
Exempel:
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 introducerades i MongoDB 4.4 i syfte att returnera storleken på ett BSON-dokument.
Du kan använda $bsonSize
för att returnera den totala storleken på alla dokument i samlingen genom att kombinera den med $group
och $sum
operatörer.
Exempel:
db.posts.aggregate([
{
$group: {
"_id": null,
"rootSize": { $sum: { $bsonSize: "$$ROOT" } }
}
}
])
Resultat:
{ "_id" : null, "rootSize" : 3012 }