Ответ 1
Для регулярного выражения вы можете использовать string.match
db.getCollectionNames().forEach(function(c) {
if(!c.match("^system.indexes")) {
db.getCollection(c).drop();
}
});
В моей базе данных много коллекций mongodb, которые мне нужно удалить. Все они имеют похожие имена, и их было бы легко удалить, если бы можно было использовать только подстановочные знаки. Но это не похоже на то, что они могут.
Есть ли способ выбрать коллекцию сразу, чтобы удалить их?
Для регулярного выражения вы можете использовать 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.getCollection(collection).drop();
print("Deleted Collection: "+ collection);
}
})
Нет, нет способа удалить несколько коллекций подстановочным знаком/регулярным выражением. Вы должны бросать их один за другим. Недавно я выполнил аналогичную задачу, и мой script смог отбросить ~ 20-30 коллекций в секунду. Сколько у вас есть?
Вы можете удалить все коллекции, используя следующую команду.
> use database_name;
> db.getCollectionNames().forEach(function(c) {
if(c != 'system.indexes') {
db.getCollection(c).drop();
}
});
Вы можете отбросить каждую коллекцию в базе данных с помощью db.dropDatabase()
в оболочке mongo. Просто убедитесь, что вы действительно хотите уничтожить все, прежде чем делать.