Удалить все в базе данных MongoDB - PullRequest
420 голосов
/ 29 июля 2010

Я занимаюсь разработкой на MongoDB. В совершенно не злых целях я иногда хочу уничтожить все в базе данных, то есть удалить каждую отдельную коллекцию и все остальное, что может лежать вокруг, и начать с нуля. Есть ли одна строка кода, которая позволит мне сделать это? Бонусные баллы за предоставление как метода консоли MongoDB, так и метода драйвера MongoDB Ruby.

Ответы [ 17 ]

1 голос
/ 11 декабря 2015

Самый простой способ удалить базу данных, скажем, в блоге:

> use blog
switched to db blog
> db.dropDatabase();
{ "dropped" : "blog", "ok" : 1 }
1 голос
/ 26 апреля 2018

Я предпочитаю

db.your_collection.remove({})

над

db.your_collection.drop()

Если ваша коллекция была специальной коллекцией т.е. ограниченная коллекция или коллекция с одним полем, помеченным как уникальное, удаление удалит саму коллекцию, и когда коллекция будет создана снова, она будет обычной коллекцией. Вы должны будете снова определить свойства. Поэтому используйте remove() для очистки документов, не удаляя коллекцию и не влияя на поведение коллекции.

1 голос
/ 02 июня 2017
  1. Список всех доступных БД шоу дбс
  2. Выберите необходимый дБ использовать
  3. Удалить базу данных db.dropDatabase () // Несколько дополнительных команд
  4. Список всех коллекций, доступных в БД показать коллекции
  5. Удалить коллекцию спецификаций db.collection.drop ()

Надеюсь, это поможет

0 голосов
/ 10 апреля 2019
db.getCollectionNames().forEach(c=>db[c].drop())
0 голосов
/ 19 мая 2016

Для удаления всех БД используйте:

for i in $(mongo --quiet --host $HOSTNAME --eval "db.getMongo().getDBNames()" | tr "," " ");

do mongo $i --host $HOSTNAME --eval "db.dropDatabase()";

done 
0 голосов
/ 27 июля 2018

В MongoDB 3.2 и более поздних версиях Mongo().getDBNames() в оболочке mongo выведет список имен баз данных на сервере:

> Mongo().getDBNames()
[ "local", "test", "test2", "test3" ]

> show dbs
local  0.000GB
test   0.000GB
test2  0.000GB
test3  0.000GB

Цикл forEach() над массивом может затем вызвать dropDatabase() чтобы отбросить все перечисленные базы данных.При желании вы можете пропустить некоторые важные базы данных, которые вы не хотите удалять.Например:

Mongo().getDBNames().forEach(function(x) {
  // Loop through all database names
  if (['admin', 'config', 'local'].indexOf(x) < 0) {
    // Drop if database is not admin, config, or local
    Mongo().getDB(x).dropDatabase();
  }
})

Пример выполнения:

> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB
test    0.000GB
test2   0.000GB
test3   0.000GB

> Mongo().getDBNames().forEach(function(x) {
...   if (['admin', 'config', 'local'].indexOf(x) < 0) {
...     Mongo().getDB(x).dropDatabase();
...   }
... })

> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB
0 голосов
/ 14 марта 2017
use <dbname>
db.dropAllUsers()
db.dropAllRoles()
db.dropDatabase()

Документация MongoDB db.dropDatabase () , объясняющая изменение, внесенное в 2.6:

Изменено в версии 2.6: Эта команда не удаляет пользователей, связанных стекущая база данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...