Neste artigo, apresento 5 maneiras que você pode usar para verificar o tamanho de uma coleção do MongoDB ao usar o shell do mongo.
O dataSize()
Método
Provavelmente, a maneira mais rápida e fácil de verificar o tamanho de uma coleção do MongoDB é usar o
db.collection.dataSize()
método. Este método retorna o tamanho da coleção em bytes. Para chamar este método, basta substituir
collection
com o nome da coleção que você deseja verificar. Exemplo:
db.posts.dataSize()
Resultado:
3012
Este exemplo verifica o tamanho de uma coleção chamada
posts
. É apenas uma pequena coleção com um punhado de pequenos documentos e, portanto, o tamanho é de apenas 3012 bytes. O totalSize()
Método
O
db.collection.totalSize()
O método retorna o tamanho total em bytes dos dados na coleção mais o tamanho de cada índice na coleção. Portanto, use esse método se desejar saber o tamanho total que inclui todos os índices.
Exemplo:
db.posts.totalSize()
Resultado:
114688
Essa é a mesma coleção com a qual executamos o exemplo anterior. As
posts
A coleção tem três índices (incluindo o do _id
campo), e podemos ver que o tamanho total é significativamente maior que o tamanho da coleção sem os índices. As stats()
Método
Se você precisar de mais do que apenas o tamanho da coleção, tente o
db.collection.stats()
método. Este método retorna estatísticas sobre a coleção (incluindo seu tamanho).
Exemplo:
db.posts.stats()
Resultado (parcial):
{
"ns" : "krankykranes.posts",
"size" : 3012,
"count" : 27,
"avgObjSize" : 111,
"storageSize" : 36864,
"freeStorageSize" : 16384,
"capped" : false,
"wiredTiger" : {
"metadata" : {
"formatVersion" : 1
},
...
Este método retorna muitos dados, então estou retornando apenas a primeira pequena parte aqui. O tamanho da coleção é listado próximo ao topo dos resultados, no
size
campo. Por padrão, esse método retorna dados de tamanho em bytes. Você pode alterá-lo para que informe em kilobytes, se preferir. Para fazer isso, use a
scale
parâmetro com um valor de 1024
. Exemplo:
db.posts.stats( { scale: 1024 } )
Resultado (parcial):
{
"ns" : "krankykranes.posts",
"size" : 2,
"count" : 27,
"avgObjSize" : 111,
"storageSize" : 36,
"freeStorageSize" : 16,
"capped" : false,
"wiredTiger" : {
"metadata" : {
"formatVersion" : 1
},
...
O
db.collection.stats()
fornece um wrapper em torno do collStats
comando (abaixo). As collStats
Comando
Como mencionado, o
db.collection.stats()
é um wrapper para o collStats
comando de diagnóstico. Este comando retorna estatísticas sobre a coleção (incluindo seu tamanho). Exemplo:
db.runCommand( { collStats : "posts", scale: 1 } )
Resultado (parcial):
{
"ns" : "krankykranes.posts",
"size" : 3012,
"count" : 27,
"avgObjSize" : 111,
"storageSize" : 36864,
"freeStorageSize" : 16384,
"capped" : false,
"wiredTiger" : {
"metadata" : {
"formatVersion" : 1
},
...
Assim como o
stats()
método, este comando retorna muitos dados, então acabei de pegar algumas coisas no topo. Observe que forneci uma
scale
de 1
neste exemplo para retornar dados de tamanho em bytes. Podemos alterar isso para 1024
para devolvê-lo em kilobytes. Exemplo:
db.runCommand( { collStats : "posts", scale: 1024 } )
Resultado (parcial):
{
"ns" : "krankykranes.posts",
"size" : 2,
"count" : 27,
"avgObjSize" : 111,
"storageSize" : 36,
"freeStorageSize" : 16,
"capped" : false,
"wiredTiger" : {
"metadata" : {
"formatVersion" : 1
},
...
O $bsonSize
Operador
O
$bsonSize
O operador de pipeline de agregação foi introduzido no MongoDB 4.4 com a finalidade de retornar o tamanho de um documento BSON. Você pode usar
$bsonSize
para retornar o tamanho total de todos os documentos da coleção combinando-o com o $group
e $sum
operadores. Exemplo:
db.posts.aggregate([
{
$group: {
"_id": null,
"rootSize": { $sum: { $bsonSize: "$$ROOT" } }
}
}
])
Resultado:
{ "_id" : null, "rootSize" : 3012 }