2013-05-13 6 views
6

est-ce possible? J'ai des collections mongoDB auto-générées que j'ai besoin de laisser tomber à un moment donné. Je connais leurs modèles de noms de collections et ils sont trop nombreux, donc les laisser tomber à la main n'est pas une option. Tous les exemples que j'ai examinés à l'aide de regex concernaient des requêtes mais pas avec des commandes de base de données. Je sais que je pourrais parcourir toutes les collections et filtrer par leur nom je pourrais le faire fonctionner mais je cherche une commande plus pratique et unique (je veux l'utiliser directement dans le shell), si possible :)Suppression de collections MongoDB en utilisant regex

suggestions?

Merci!

+1

vérifier ces: http://stackoverflow.com/questions/11206890/how-to-delete-lots-of-mongodb-collections-at-once – jmingov

+0

Lorsque vous générer automatiquement et auto-déposer beaucoup des collections, vous faites probablement quelque chose de mal. – Philipp

+0

@Philipp c'est un cas d'utilisation assez concret :) – jarandaf

Répondre

12

Vous pouvez le faire en utilisant la console MongoDB:

regExp = /test/; 
db.getCollectionNames().filter(function(name){ 
    return name.match(regExp) 
}).forEach(function(name){ 
    db.getCollection(name).drop() 
}); 

Vous pouvez utiliser une expression rationnelle pour répondre à vos noms de collections.

+0

Vous avez raison, semble être la seule approche de travail (je voulais l'éviter cependant). Si aucune autre solution possible n'est proposée rapidement, je l'accepterai comme une réponse. Merci pour votre temps! – jarandaf

4
db.getCollectionNames().forEach(function(c) { 
    if(c.match("^system.indexes")) { 
     db.getCollection(c).drop(); 
    } 
    }); 
Questions connexes