Как удалить много коллекций 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() в оболочке монго. Просто убедитесь, что вы действительно хотите уничтожить все до того, как это сделаете.

Другие вопросы по тегам