2012-08-29 15 views
5

Odniesienia do reindeksowania zbiory MongoDB są zwykle za kolekcji:Polecenie reindex wszystkie kolekcje MongoDB

db.mycollection.reIndex(); 

Chciałbym reindex szereg zbiorów naraz. Jeden po drugim może trochę męczyć.

Jakie jest odpowiednie polecenie wydawania reIndex(); we wszystkich kolekcjach?

+0

Jestem ciekaw, jaki jest twój przypadek użycia, w którym musisz ponownie zindeksować swoje kolekcje? – JohnnyHK

+0

Może on migruje do nowego formatu indeksu (zmieniło się to jakiś czas temu). –

Odpowiedz

13

Co z tym? To wciąż jeden po drugim dla bazy danych, ale tylko jedno polecenie dla ciebie.

db.getCollectionNames().forEach(function(coll_name) { 
    var coll = db.getCollection(coll_name); 
    coll.reIndex(); 
}); 
15

Nieco mniejsza wersja odpowiedź Sergio:

db.getCollectionNames().forEach(function(collection){db[collection].reIndex()}); 

Nie ma potrzeby, aby uzyskać odwołanie do odbioru w pierwszej kolejności.

Powiązane problemy