In dit artikel presenteer ik 5 manieren die je kunt gebruiken om de grootte van een MongoDB-verzameling te controleren bij gebruik van de mongo-shell.
De dataSize()
Methode
Waarschijnlijk de snelste en gemakkelijkste manier om de grootte van een MongoDB-verzameling te controleren, is door de db.collection.dataSize()
te gebruiken. methode. Deze methode retourneert de grootte van de verzameling in bytes.
Om deze methode aan te roepen, vervangt u eenvoudig collection
met de naam van de collectie die u wilt controleren.
Voorbeeld:
db.posts.dataSize()
Resultaat:
3012
Dit voorbeeld controleert de grootte van een verzameling genaamd posts
. Het is maar een kleine verzameling met een handvol kleine documenten, en dus is de grootte slechts 3012 bytes.
De totalSize()
Methode
De db.collection.totalSize()
methode retourneert de totale grootte in bytes van de gegevens in de verzameling plus de grootte van elke index in de verzameling.
Gebruik daarom deze methode als u de totale grootte wilt weten die alle indexen omvat.
Voorbeeld:
db.posts.totalSize()
Resultaat:
114688
Dit is dezelfde verzameling waar we het vorige voorbeeld tegen hebben uitgevoerd. De posts
collectie heeft drie indexen (inclusief die op de _id
veld), en we kunnen zien dat de totale omvang aanzienlijk groter is dan de collectiegrootte zonder de indexen.
De stats()
Methode
Als u meer nodig heeft dan alleen de collectiegrootte, kunt u de db.collection.stats()
proberen methode.
Deze methode retourneert statistieken over de verzameling (inclusief de grootte).
Voorbeeld:
db.posts.stats()
Resultaat (gedeeltelijk):
{
"ns" : "krankykranes.posts",
"size" : 3012,
"count" : 27,
"avgObjSize" : 111,
"storageSize" : 36864,
"freeStorageSize" : 16384,
"capped" : false,
"wiredTiger" : {
"metadata" : {
"formatVersion" : 1
},
...
Deze methode retourneert veel gegevens, dus ik geef hier alleen het eerste kleine deel terug. De collectiegrootte wordt bovenaan de resultaten vermeld, in de size
veld.
Standaard retourneert deze methode groottegegevens in bytes. U kunt het desgewenst wijzigen zodat het in kilobytes rapporteert. Gebruik hiervoor de scale
parameter met een waarde van 1024
.
Voorbeeld:
db.posts.stats( { scale: 1024 } )
Resultaat (gedeeltelijk):
{
"ns" : "krankykranes.posts",
"size" : 2,
"count" : 27,
"avgObjSize" : 111,
"storageSize" : 36,
"freeStorageSize" : 16,
"capped" : false,
"wiredTiger" : {
"metadata" : {
"formatVersion" : 1
},
...
De db.collection.stats()
methode biedt een wrapper rond de collStats
commando (hieronder).
De collStats
Commando
Zoals gezegd, de db.collection.stats()
methode is een wrapper voor de collStats
diagnostische opdracht. Deze opdracht retourneert statistieken over de verzameling (inclusief de grootte).
Voorbeeld:
db.runCommand( { collStats : "posts", scale: 1 } )
Resultaat (gedeeltelijk):
{
"ns" : "krankykranes.posts",
"size" : 3012,
"count" : 27,
"avgObjSize" : 111,
"storageSize" : 36864,
"freeStorageSize" : 16384,
"capped" : false,
"wiredTiger" : {
"metadata" : {
"formatVersion" : 1
},
...
Net als bij de stats()
methode, retourneert deze opdracht veel gegevens, dus ik heb zojuist wat dingen uit de top gehaald.
Merk op dat ik een scale
heb opgegeven van 1
in dit voorbeeld om groottegegevens in bytes te retourneren. We kunnen dat veranderen in 1024
om het terug te geven in kilobytes.
Voorbeeld:
db.runCommand( { collStats : "posts", scale: 1024 } )
Resultaat (gedeeltelijk):
{
"ns" : "krankykranes.posts",
"size" : 2,
"count" : 27,
"avgObjSize" : 111,
"storageSize" : 36,
"freeStorageSize" : 16,
"capped" : false,
"wiredTiger" : {
"metadata" : {
"formatVersion" : 1
},
...
De $bsonSize
Operator
De $bsonSize
aggregatiepijplijnoperator is geïntroduceerd in MongoDB 4.4 met als doel de grootte van een BSON-document terug te geven.
U kunt $bsonSize
. gebruiken om de totale grootte van alle documenten in de verzameling terug te geven door deze te combineren met de $group
en $sum
operators.
Voorbeeld:
db.posts.aggregate([
{
$group: {
"_id": null,
"rootSize": { $sum: { $bsonSize: "$$ROOT" } }
}
}
])
Resultaat:
{ "_id" : null, "rootSize" : 3012 }