2013-05-13 22 views
6

jest to możliwe? Mam automatycznie wygenerowane kolekcje mongoDB, które w pewnym momencie muszę upuścić. Znam ich nazwy kolekcji i jest ich zbyt wiele, więc ręczne upuszczenie ich nie jest możliwe. Wszystkie przykłady, które zobaczyłem przy użyciu wyrażenia regularnego, zawierały zapytania, ale nie polecenia bazy danych. Wiem, że mogłem iteracyjne nad wszystkie zbiory i filtrowanie po imieniu mogę dostać pracy, ale szukam polecenia bardziej poręcznym i pojedynczej (chcę go używać bezpośrednio w powłoce), jeśli to możliwe :)Upuszczanie kolekcji MongoDB przy użyciu regex

Any propozycje?

Dziękujemy!

+1

sprawdzić te: http://stackoverflow.com/questions/11206890/how-to-delete-lots-of-mongodb-collections-at-once – jmingov

+0

Podczas automatycznego generowania i auto-upuść dużo zbiorów prawdopodobnie zrobisz coś złego. – Philipp

+0

@Philipp to całkiem konkretny przypadek użycia :) – jarandaf

Odpowiedz

12

Można to zrobić za pomocą konsoli MongoDB:

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

Można użyć dowolnego wyrażenia regularnego, aby dopasować nazwy kolekcji.

+0

Masz rację, wydaje się być jedynym podejściem do pracy (chciałem tego uniknąć). Jeśli wkrótce nie zostaną podane inne możliwe rozwiązania, przyjmuję to jako odpowiedź. Dziękuję za Twój czas! – jarandaf

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