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


Ответы:


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и удалить файлы данных из вашего каталога данных, а затем перезапустить.

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


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();

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


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()



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он все еще используется, поэтому вставка любого ввода в это время снова инициализирует базу данных.


4

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

создать drop_bad.js :

use bad;
db.dropDatabase();

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

mongo < drop_bad.js

2

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


2

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

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

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

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

db.dropDatabase()

-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()"


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 ();


-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 :
Мистер Кеннеди,
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.