Regex

2013-05-13 24 views
6

kullanarak MongoDB koleksiyonlarını bırakmak mümkün mü? Otomatik olarak oluşturulmuş mongoDB koleksiyonlarım var. Koleksiyon isim kalıplarını biliyorum ve çok fazlalar, bu yüzden onları el ile bırakmak bir seçenek değil. Regex kullanarak baktığım tüm örnekler, veritabanı komutları ile değil, sorguları içeriyordu. (I kabuğunda doğrudan kullanmak istiyorum) mümkünse :)Regex

Herhangi ben o çalışma alabilir onların adıyla tüm koleksiyonlara ve filtreleme tekrarlayabilirsiniz biliyorum ama daha kullanışlı ve tek komutla arıyorum öneri?

Teşekkür ederiz!

+1

çek şu: http://stackoverflow.com/questions/11206890/how-to-delete-lots-of-mongodb-collections-at-once – jmingov

+0

Eğer otomatik olarak oluşturmasına ve bir çok oto-düşürdüğünüzde koleksiyonların muhtemelen yanlış bir şey yapıyorsunuz. – Philipp

+0

@Philipp bu oldukça somut bir kullanım örneği :) – jarandaf

cevap

12

Sen MongoDB konsolunu kullanarak bunu yapabilirsiniz:

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

Sen koleksiyonları isimleri eşleştirmek için herhangi Regexp'i kullanabilirsiniz.

+0

Haklısınız, tek çalışma yaklaşımı gibi görünüyorsunuz (bunu önlemek istedim). Yakında başka bir çözüm sağlanamazsa, bunu bir cevap olarak kabul edeceğim. Zaman ayırdığın için teşekkürler! – jarandaf

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