2013-05-13 2 views
6

Возможно ли это? У меня есть автогенерированные коллекции mongoDB, которые в определенный момент мне нужно отбросить. Я знаю их шаблоны имен коллекций, и их слишком много, поэтому отбрасывать их вручную не вариант. Все примеры, которые я использовал при использовании регулярных выражений, включали запросы, но не с командами базы данных. Я знаю, что могу перебирать все коллекции и фильтровать их по имени, я мог бы заставить его работать, но я ищу более удобную и единственную команду (я хочу использовать ее непосредственно в оболочке), если это возможно :)Удаление коллекций MongoDB с использованием регулярного выражения

Любой предложения?

Спасибо!

+1

проверить эти: http://stackoverflow.com/questions/11206890/how-to-delete-lots-of-mongodb-collections-at-once – jmingov

+0

Когда вы автоматически создавать и автоматически понижаться много из коллекций вы, вероятно, делаете что-то неправильно. – Philipp

+0

@Philipp это довольно конкретный случай использования :) – jarandaf

ответ

12

Вы можете сделать это с помощью MongoDB консоли:

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

Вы можете использовать любое регулярное выражение в соответствии с вашими именами коллекций.

+0

Вы правы, это единственный рабочий подход (хотя я хотел его избежать). Если в ближайшее время не появятся другие возможные решения, я приму это в качестве ответа. Спасибо за ваше время! – jarandaf

4
db.getCollectionNames().forEach(function(c) { 
    if(c.match("^system.indexes")) { 
     db.getCollection(c).drop(); 
    } 
    }); 
Смежные вопросы