sql >> Database >  >> NoSQL >> MongoDB

5 manieren om de grootte van een verzameling in MongoDB te controleren

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 }

  1. Webscraping met Scrapy en MongoDB

  2. Zoek uit of een zoekopdracht een index in MongoDB gebruikt

  3. Luister naar wijzigingen in de redis-lijst

  4. MongoDB - admin-gebruiker niet geautoriseerd