Подтвердить что ты не робот

Как удалить много коллекций mongodb сразу?

В моей базе данных много коллекций mongodb, которые мне нужно удалить. Все они имеют похожие имена, и их было бы легко удалить, если бы можно было использовать только подстановочные знаки. Но это не похоже на то, что они могут.

Есть ли способ выбрать коллекцию сразу, чтобы удалить их?

4b9b3361

Ответ 1

Для регулярного выражения вы можете использовать string.match

db.getCollectionNames().forEach(function(c) {
    if(!c.match("^system.indexes")) { 
        db.getCollection(c).drop();
    }
  });

Ответ 2

# 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.getCollection(collection).drop();
        print("Deleted Collection: "+ collection);
    }
  })

Ответ 3

Нет, нет способа удалить несколько коллекций подстановочным знаком/регулярным выражением. Вы должны бросать их один за другим. Недавно я выполнил аналогичную задачу, и мой script смог отбросить ~ 20-30 коллекций в секунду. Сколько у вас есть?

Ответ 4

Вы можете удалить все коллекции, используя следующую команду.

> use database_name;

> db.getCollectionNames().forEach(function(c) {
    if(c != 'system.indexes') { 
        db.getCollection(c).drop();
    }
  });

Ответ 5

Вы можете отбросить каждую коллекцию в базе данных с помощью db.dropDatabase() в оболочке mongo. Просто убедитесь, что вы действительно хотите уничтожить все, прежде чем делать.