Informando Todas las Bases de Datos con sus Tamaños de Colección en MongoDB.
Estoy tratando de encontrar todas las colecciones en cada base de datos de MongoDB cuyo tamaño sea superior a 1GB e imprimir el nombre de la base de datos, el nombre de la colección y el tamaño de la colección.
Escribí un javascript para ello, funciona en mongo que tiene menos bases de datos pero apaga el mongo mientras intenta ejecutar el script en producción. Parece que la consulta no es óptima en cuanto a rendimiento.
Aquí está el javascript que escribí:
db.getMongo().getDBNames().forEach(function(dbName){
db.getMongo().getDB(dbName).getCollectionNames().forEach(function(collName){
var coll = db.getMongo().getDB(dbName).getCollection(collName);
var collSize = coll.stats(1024*1024*1024).storageSize;
if (collSize > 1) {
print(dbName + ":" + collName + ":" + collSize);
}
})
})
¿Hay alguna manera de mejorarlo?
Gracias.
davy.ai
Sí, existen algunas formas de mejorar el rendimiento de la consulta. Aquí hay algunas sugerencias:
Tenga en cuenta que este código asume que todas las colecciones no son capaces, de lo contrario deberá agregar un paso de filtrado similar al que se encuentra en el ejemplo de agregación.
Este código procesa 10 bases de datos a la vez, lo que debería reducir la carga en el servidor y evitar que se bloquee. Ajuste la variable “CHUNK_SIZE” según sea necesario.