Как удалить много коллекций mongodb одновременно?
В моей базе данных есть много коллекций mongodb, которые мне нужно удалить. Все они имеют одинаковые имена, и было бы легко удалить их, если бы можно было использовать только символы подстановки. Но не похоже, что они могут.
Есть ли способ выбрать сразу несколько коллекций, чтобы удалить их?
5 ответов
Для регулярных выражений вы можете использовать string.match
db.getCollectionNames().forEach(function(c) {
if(!c.match("^system.indexes")) {
db.getCollection(c).drop();
}
});
# Delete Particular Collections From MongoDB
> use database_name
> delete_collection_list = ["collection1", "collection2", "collection3", "collection4", "collection5", "collection6"]
> delete_collection_list.forEach( function (collection) {
if (db.getCollectionNames().indexOf(collection)>=0) {
db[collection].drop();
print("Deleted Collection: "+ collection);
}
})
Вы можете удалить все коллекции, используя следующую команду.
> use database_name;
> db.getCollectionNames().forEach(function(c) {
if(c != 'system.indexes') {
db.getCollection(c).drop();
}
});
Нет, нет способа отбросить несколько коллекций подстановочным знаком / регулярным выражением. Вы должны бросить их один за другим. Недавно я выполнил аналогичную задачу, и мой сценарий смог отбросить ~20-30 коллекций в секунду. Сколько у тебя?
Вы можете удалить каждую коллекцию в базе данных с помощью db.dropDatabase()
в оболочке монго. Просто убедитесь, что вы действительно хотите уничтожить все до того, как это сделаете.