Как удалить базу данных MongoDB из командной строки?

855

Какой самый простой способ сделать это из моей подсказки bash?

Кофемолка
источник
5
см. этот вопрос: stackoverflow.com/questions/3366397/… . Это действительно легко сделать из оболочки монго.
Джесси Поллак

Ответы:

1084

Нравится:

mongo <dbname> --eval "db.dropDatabase()"

Подробнее о сценарии оболочки из командной строки здесь: https://docs.mongodb.com/manual/tutorial/write-scripts-for-the-mongo-shell/#scripting

Тим Готье
источник
Это было очень полезно в моем случае. Каким-то образом у меня была база данных с именем "mean-dev" из более старой установки, и ввод "mean-dev.dropDatabase ()" в оболочке mongo привел к "ReferenceError: mean is notfined". Но использование решения в этом ответе сделало свое дело. +1
КП МакГрегор
22
Если вы хотите получить удобочитаемый результат, сделайте это так: mongo <dbname> --eval "printjson(db.dropDatabase())"
Дмитрий Униченко,
1
КП Макгрегор. вы должны были быть: «используйте mean-dev» + «db.dropDatabase ()»
ozma
Спасибо. Вот как вы можете настроить хост и порт: mongo <yourDb> --host <yourHost> --port <yourPort> --eval 'db.dropDatabase()'
Clemens
844

Лучший способ сделать это с консоли mongodb:

> use mydb; 
> db.dropDatabase();

Кроме того, вы можете остановить mongodи удалить файлы данных из вашего каталога данных, а затем перезапустить.

Подсказка: вы также можете переместить файлы данных в подпапку и удалить их, если вы уверены, что они вам больше не нужны.

mnemosyn
источник
2
Я думаю, он имеет в виду прямо из приглашения, не так ли? В этом случае вам нужно либо сгенерировать файл .js с этими командами и вызвать его из командной строки, используя «mongo dropdb.js», либо сделать что-либо, как вы говорите, и удалить файлы вручную.
Ремон ван Влит
2
но имейте useв виду, что вы не можете использовать команду в файле .js, вам нужно подключиться к конкретной базе данных (укажите dbname для команды mongo)
Betlista
46
Совет для профессионалов: после удаления базы данных вы можете выйти из оболочки mongo и удалить свой ~/.dbshellфайл, чтобы очистить историю команд. (Возможно, есть лучший способ сделать это - я не уверен.) Я делаю это, потому что, в отличие от SQL, команда mongo для удаления базы данных на самом деле не ссылается на имя базы данных для удаления - она ​​просто удаляет база данных, к которой в данный момент подключен клиент. Очистка истории команд предотвратит случайное повторение dropDatabaseкоманды и непреднамеренное удаление второй базы данных.
Крис Аллен Лэйн
3
Это хорошая идея, @chrisallenlane. Временами оболочка mongodb является довольно опасным инструментом ... :)
mnemosyn
Предупреждение. Если вы отбрасываете базу данных и создаете новую базу данных с тем же именем, вы должны либо перезапустить все экземпляры mongos, либо использовать команду flushRouterConfig на всех экземплярах mongos перед чтением или записью в эту базу данных. Это действие гарантирует, что экземпляры mongos обновят свой кэш метаданных, включая местоположение основного сегмента для новой базы данных. В противном случае монго могут пропустить данные о чтениях и могут записать данные в неправильный шард.
Lekr0
115

Я нашел это легко запомнить:

mongo //to start the mongodb shell

show dbs //to list existing databases

use <dbname> //the <dbname> is the database you'd like to drop

db //should show <dbname> just to be sure I'm working with the right database

db.dropDatabase() //will delete the database & return { "dropped" : "<dbname>", "ok" : 1 }
Алекс Бабан
источник
113

Вам не нужны heredocs или eval , mongoсам он может выступать в роли переводчика.

#!/usr/bin/env mongo
var db = new Mongo().getDB("someDatabase");
db.dropDatabase();

Сделайте файл исполняемым и запустите его.

mikemaccana
источник
3
Обратите внимание, что имя сценария должно заканчиваться .js, в противном случае оно будет интерпретироваться как адрес БД.
Vegard
1
@ Vegard Это не правильно. Вы запускаете, mongo filenameчто не нужно - файл уже имеет переводчик в верхней строке. Просто сделайте файл исполняемым и запустите его./filename
mikemaccana
@mikemaccana Я знаю это, но на ./filenameсамом деле работа будет работать /usr/bin/env mongo filename, верно? И поэтому, если filenameне заканчивается .py, Монго не распознает аргумент как скрипт для запуска.
Вегард
«Выполнение ./filename фактически запустит / usr / bin / env mongo filename, верно?» № Проверьте выход ps.
mikemaccana
@mikemaccana Выходные данные psпоказывают только то, что выполняется в тот момент, когда вы вызываете ps, а не цепочку execвызовов, которые приводят к этому моменту, или работу, которую ядро ​​выполнило для загрузки и выполнения файла. Если вы хотите знать, что на самом деле происходит, вы должны написать обертку вокруг /usr/bin/env, установить ее как исполняемый файл в строке shebang, а затем начать все с этого strace.
kbolino
31

Запустить MongoDB

Команда для удаления базы данных:

1. сначала выберите базу данных, которую вы хотите удалить

use < database name >

2. Тогда используйте это ..

db.dropDatabase()
бутон-е
источник
28

Вы также можете использовать «heredoc»:

mongo localhost/db <<EOF
db.dropDatabase()
EOF

Результаты в виде как:

mongo localhost/db <<EOF
db.dropDatabase()
EOF
MongoDB shell version: 2.2.2
connecting to: localhost/db
{ "dropped" : "db", "ok" : 1 }    
bye

Мне нравится использовать heredoc для таких вещей, если вам нужна более сложная последовательность команд.

Дэвид
источник
19

Вот некоторые из них используют полные операции удаления для mongodb, используя оболочку mongo

Чтобы удалить конкретный документ в коллекциях:db.mycollection.remove( {name:"stack"} )

Чтобы удалить все документы в коллекциях: db.mycollection.remove()

Чтобы удалить коллекцию : db.mycollection.drop()

чтобы удалить базу данных : сначала перейдите в эту базу данных по use mydbкоманде, а затем

db.dropDatabase()

прямо из командной строки или blash: mongo mydb --eval "db.dropDatabase()

BHV
источник
18

Другой путь:

echo "db.dropDatabase()" | mongo <database name>
Габриэль Манчини
источник
15

Выполнить в терминале:

mongo // To go to shell

show databases // To show all existing databases.

use <DATA_BASE> // To switch to the wanted database.

db.dropDatabase() // To remove the current database.
Андерсон Лопес
источник
1
Тот же ответ, что и этот , который был дан месяцем ранее.
Дан Даскалеску
10

Откройте другое окно терминала и выполните следующие команды:

mongodb
use mydb
db.dropDatabase()

Вывод этой операции должен выглядеть следующим образом

MAC:FOLDER USER$ mongodb
> show databases
local      0.78125GB
mydb       0.23012GB
test       0.23012GB
> use mydb
switched to db mydb
>db.dropDatabase()
{ "dropped" : "mydb", "ok" : 1 }
>

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

helcode
источник
4

Используя Javascript, вы можете легко создать скрипт drop_bad.js для удаления вашей базы данных:

создать drop_bad.js :

use bad;
db.dropDatabase();

Затем выполните команду 1 в терминале, чтобы выполнить сценарий, используя оболочку mongo:

mongo < drop_bad.js
sergiuz
источник
2

Несмотря на то, что есть несколько методов, лучший способ (самый эффективный и самый простой) использует db.dropDatabase()

Лакмал Витханаж
источник
2

В командной строке сначала подключитесь к mongodb, используя следующую команду:

mongo -h [host-name]:[port:number] -d [dbname] -u [username] -p [password]

вы будете иметь доступ к БД с <dbname>.

Выполните следующую команду, чтобы удалить всю базу данных:

db.dropDatabase()
TechGuy
источник
-h - это помощь, -d - это не опция, более похожая на `mongo --host [имя-хоста]: [порт: номер] -u [имя пользователя] -p [пароль] [имя_базы] --eval" db.dropDatabase ( ) "`
jasenmichael
2

один лайнер удаленный удалить все коллекции из базы данных Монго

Заметка должна использовать --host, (-h это справка для команды mongo), а -d не является опцией, выберите db и команду после пароля.

mongo --host <mongo_host>:<mongo_port> -u <db_user> -p <db_pass> <your_db> --eval "db.dropDatabase()"
jasenmichael
источник
0

Войдите в вашу командную строку mongoDB: и введите следующие команды. использовать "YOUR_DATABASE_NAME"; db.dropDatabase ();

Шринивас Калангуткар
источник
0

Удалите базу данных MongoDB, используя python:

import argparse

import pymongo


if __name__ == "__main__":
    """
    Drop a Database.
    """

    parser = argparse.ArgumentParser()
    parser.add_argument("--host", default='mongodb://localhost:27017',
                        help="mongodb URI [default: %(default)s]")
    parser.add_argument("--database", default=None,
                        help="database name: %(default)s]")

    args = parser.parse_args()

    client = pymongo.MongoClient(host=args.host)

    if args.database in client.list_database_names():
        client.drop_database(args.database)
        print(f"Dropped: '{args.database}'")
    else:
        print(f"Database '{args.database}' does not exist")
Джо Драмгул
источник
-1

БД покажет текущий тип имени базы данных: db.dropDatabase ();

1 - выберите базу данных для удаления, используя ключевое слово « use ».

2 - затем введите db.dropDatabase ();

nixxo_raa
источник
-2

используйте следующую команду из оболочки монго, чтобы сбросить дб

использование; db.dropDatabase ();

Ануп Шарма
источник
как эта команда указывает, какую базу данных отбрасывать? Я попробовал с базой данных «auth-users», > use auth-users ; db.dropDatabase()и > use auth-users; db.dropDatabase()оба вернулись[thread1] Error: [auth-users ; db.dropD atabase()] is not a valid database name :
Мистер Кеннеди,