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 }