2012-06-26 31 views
12

Hay muchas colecciones de mongodb en mi base de datos que necesito eliminar. Todos tienen nombres similares, y sería fácil eliminarlos si solo se pudieran usar caracteres comodín. Pero no parece que puedan.¿Cómo eliminar muchas colecciones de mongodb a la vez?

¿Hay una manera de seleccionar un grupo de colecciones a la vez para eliminarlos?

Respuesta

6

No, no es una manera de dejar caer varias colecciones por un comodín/expresiones regulares. Tienes que soltarlos uno por uno. Recientemente, realicé una tarea similar y mi script fue capaz de dejar ~ 20-30 colecciones por segundo. ¿Cuantos tienes?

5

Puede eliminar todas las colecciones con el siguiente comando.

> use database_name; 

> db.getCollectionNames().forEach(function(c) { 
    if(c != 'system.indexes') { 
     db.getCollection(c).drop(); 
    } 
    }); 
+1

Eso sigue siendo uno por uno, y no hay expresiones regulares :) –

17

Para expresiones regulares puede utilizar String.match

db.getCollectionNames().forEach(function(c) { 
    if(!c.match("^system.indexes")) { 
     db.getCollection(c).drop(); 
    } 
    }); 
+2

Compruebe su expresión regular. Su ejemplo soltará la colección 'system.indexes'. Supongo que tu intención era que dejaras todo excepto 'system.indexes'. – wyattisimo

+0

@wyattisimo tienes razón, la expresión regular coincide con 'system.indexes', y sí, la intención es dejar todo excepto' system.indexes'. ¡Gracias! He arreglado el código. –

3

Usted puede eliminar todos los recogida en la base de datos con db.dropDatabase() en la consola mongo. Solo asegúrate de que realmente quieras destruir todo antes de hacerlo.

3
# Delete Particular Collections From MongoDB 

> use database_name 

> delete_collection_list = ["collection1", "collection2", "collection3", "collection4", "collection5", "collection6"] 

> delete_collection_list.forEach(function (collection) { 
    if (db.getCollectionNames().indexOf(collection)>=0) { 
     db[collection].drop(); 
     print("Deleted Collection: "+ collection); 
    } 
    }) 
Cuestiones relacionadas