sql >> Databasteknik >  >> NoSQL >> MongoDB

5 sätt att kontrollera storleken på en samling i MongoDB

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 }

  1. Varför är SQLite snabbare än Redis i detta enkla riktmärke?

  2. Nästa stopp – Bygga en datapipeline från Edge till Insight

  3. Hur undviker man bristen på transaktioner i MongoDB?

  4. Unika dokument som använder flera värden i Mongoose Schema