MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

5 modi per controllare le dimensioni di una raccolta in MongoDB

In questo articolo presento 5 modi che puoi usare per controllare la dimensione di una raccolta MongoDB quando usi la mongo shell.

Il dataSize() Metodo

Probabilmente il modo più rapido e semplice per controllare la dimensione di una raccolta MongoDB è utilizzare db.collection.dataSize() metodo. Questo metodo restituisce la dimensione della raccolta in byte.

Per chiamare questo metodo, sostituisci semplicemente collection con il nome della collezione che desideri controllare.

Esempio:

db.posts.dataSize()

Risultato:

3012

Questo esempio verifica la dimensione di una raccolta denominata posts . È solo una piccola raccolta con una manciata di piccoli documenti, quindi la dimensione è di soli 3012 byte.

Il totalSize() Metodo

Il db.collection.totalSize() restituisce la dimensione totale in byte dei dati nella raccolta più la dimensione di ogni indice nella raccolta.

Pertanto, utilizza questo metodo se desideri conoscere la dimensione totale che include tutti gli indici.

Esempio:

db.posts.totalSize()

Risultato:

114688

Questa è la stessa raccolta su cui abbiamo eseguito l'esempio precedente. I posts raccolta ha tre indici (incluso quello su _id campo), e possiamo vedere che la dimensione totale è significativamente superiore alla dimensione della raccolta senza gli indici.

Le stats() Metodo

Se hai bisogno di qualcosa di più della semplice dimensione della raccolta, puoi provare db.collection.stats() metodo.

Questo metodo restituisce le statistiche sulla raccolta (compresa la sua dimensione).

Esempio:

db.posts.stats()

Risultato (parziale):

{
	"ns" : "krankykranes.posts",
	"size" : 3012,
	"count" : 27,
	"avgObjSize" : 111,
	"storageSize" : 36864,
	"freeStorageSize" : 16384,
	"capped" : false,
	"wiredTiger" : {
		"metadata" : {
			"formatVersion" : 1
		},
...

Questo metodo restituisce molti dati, quindi sto solo restituendo la prima piccola parte qui. La dimensione della raccolta è elencata nella parte superiore dei risultati, nella size campo.

Per impostazione predefinita, questo metodo restituisce i dati sulle dimensioni in byte. Puoi cambiarlo in modo che riporti in kilobyte se preferisci. Per fare ciò, usa la scale parametro con un valore di 1024 .

Esempio:

db.posts.stats( { scale: 1024 } )

Risultato (parziale):

{
	"ns" : "krankykranes.posts",
	"size" : 2,
	"count" : 27,
	"avgObjSize" : 111,
	"storageSize" : 36,
	"freeStorageSize" : 16,
	"capped" : false,
	"wiredTiger" : {
		"metadata" : {
			"formatVersion" : 1
		},
...

Il db.collection.stats() fornisce un wrapper attorno a collStats comando (sotto).

Il collStats Comando

Come accennato, il db.collection.stats() è un wrapper per collStats comando diagnostico. Questo comando restituisce le statistiche sulla raccolta (inclusa la sua dimensione).

Esempio:

db.runCommand( { collStats : "posts", scale: 1 } )

Risultato (parziale):

{
	"ns" : "krankykranes.posts",
	"size" : 3012,
	"count" : 27,
	"avgObjSize" : 111,
	"storageSize" : 36864,
	"freeStorageSize" : 16384,
	"capped" : false,
	"wiredTiger" : {
		"metadata" : {
			"formatVersion" : 1
		},
...

Come con stats() metodo, questo comando restituisce molti dati, quindi ho appena preso alcune cose dall'alto.

Nota che ho fornito una scale di 1 in questo esempio per restituire i dati sulle dimensioni in byte. Possiamo cambiarlo in 1024 per restituirlo in kilobyte.

Esempio:

db.runCommand( { collStats : "posts", scale: 1024 } )

Risultato (parziale):

{
	"ns" : "krankykranes.posts",
	"size" : 2,
	"count" : 27,
	"avgObjSize" : 111,
	"storageSize" : 36,
	"freeStorageSize" : 16,
	"capped" : false,
	"wiredTiger" : {
		"metadata" : {
			"formatVersion" : 1
		},
...

Il $bsonSize Operatore

Il $bsonSize l'operatore della pipeline di aggregazione è stato introdotto in MongoDB 4.4 allo scopo di restituire le dimensioni di un documento BSON.

Puoi usare $bsonSize per restituire la dimensione totale di tutti i documenti della collezione combinandola con il $group e $sum operatori.

Esempio:

db.posts.aggregate([
  {
    $group: {
      "_id": null,
      "rootSize": { $sum: { $bsonSize: "$$ROOT" } }
    }
  }
])

Risultato:

{ "_id" : null, "rootSize" : 3012 }