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 }