Это было очень полезно в моем случае. Каким-то образом у меня была база данных с именем "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и удалить файлы данных из вашего каталога данных, а затем перезапустить.
Подсказка: вы также можете переместить файлы данных в подпапку и удалить их, если вы уверены, что они вам больше не нужны.
Я думаю, он имеет в виду прямо из приглашения, не так ли? В этом случае вам нужно либо сгенерировать файл .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 }
Обратите внимание, что имя сценария должно заканчиваться .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. сначала выберите базу данных, которую вы хотите удалить
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.
Тот же ответ, что и этот , который был дан месяцем ранее.
Дан Даскалеску
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он все еще используется, поэтому вставка любого ввода в это время снова инициализирует базу данных.
как эта команда указывает, какую базу данных отбрасывать? Я попробовал с базой данных «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 :
Ответы:
Нравится:
Подробнее о сценарии оболочки из командной строки здесь: https://docs.mongodb.com/manual/tutorial/write-scripts-for-the-mongo-shell/#scripting
источник
mongo <dbname> --eval "printjson(db.dropDatabase())"
mongo <yourDb> --host <yourHost> --port <yourPort> --eval 'db.dropDatabase()'
Лучший способ сделать это с консоли mongodb:
Кроме того, вы можете остановить
mongod
и удалить файлы данных из вашего каталога данных, а затем перезапустить.Подсказка: вы также можете переместить файлы данных в подпапку и удалить их, если вы уверены, что они вам больше не нужны.
источник
use
в виду, что вы не можете использовать команду в файле .js, вам нужно подключиться к конкретной базе данных (укажите dbname для команды mongo)~/.dbshell
файл, чтобы очистить историю команд. (Возможно, есть лучший способ сделать это - я не уверен.) Я делаю это, потому что, в отличие от SQL, команда mongo для удаления базы данных на самом деле не ссылается на имя базы данных для удаления - она просто удаляет база данных, к которой в данный момент подключен клиент. Очистка истории команд предотвратит случайное повторениеdropDatabase
команды и непреднамеренное удаление второй базы данных.Я нашел это легко запомнить:
источник
Вам не нужны heredocs или eval ,
mongo
сам он может выступать в роли переводчика.Сделайте файл исполняемым и запустите его.
источник
.js
, в противном случае оно будет интерпретироваться как адрес БД.mongo filename
что не нужно - файл уже имеет переводчик в верхней строке. Просто сделайте файл исполняемым и запустите его./filename
./filename
самом деле работа будет работать/usr/bin/env mongo filename
, верно? И поэтому, еслиfilename
не заканчивается.py
, Монго не распознает аргумент как скрипт для запуска.ps
.ps
показывают только то, что выполняется в тот момент, когда вы вызываетеps
, а не цепочкуexec
вызовов, которые приводят к этому моменту, или работу, которую ядро выполнило для загрузки и выполнения файла. Если вы хотите знать, что на самом деле происходит, вы должны написать обертку вокруг/usr/bin/env
, установить ее как исполняемый файл в строке shebang, а затем начать все с этогоstrace
.Запустить MongoDB
Команда для удаления базы данных:
1. сначала выберите базу данных, которую вы хотите удалить
2. Тогда используйте это ..
источник
Вы также можете использовать «heredoc»:
Результаты в виде как:
Мне нравится использовать heredoc для таких вещей, если вам нужна более сложная последовательность команд.
источник
Вот некоторые из них используют полные операции удаления для mongodb, используя оболочку mongo
Чтобы удалить конкретный документ в коллекциях:
db.mycollection.remove( {name:"stack"} )
Чтобы удалить все документы в коллекциях:
db.mycollection.remove()
Чтобы удалить коллекцию :
db.mycollection.drop()
чтобы удалить базу данных : сначала перейдите в эту базу данных по
use mydb
команде, а затемпрямо из командной строки или blash:
mongo mydb --eval "db.dropDatabase()
источник
Другой путь:
источник
Выполнить в терминале:
источник
Откройте другое окно терминала и выполните следующие команды:
Вывод этой операции должен выглядеть следующим образом
Пожалуйста, обратите внимание, что
mydb
он все еще используется, поэтому вставка любого ввода в это время снова инициализирует базу данных.источник
Используя Javascript, вы можете легко создать скрипт drop_bad.js для удаления вашей базы данных:
создать drop_bad.js :
Затем выполните команду 1 в терминале, чтобы выполнить сценарий, используя оболочку mongo:
источник
Несмотря на то, что есть несколько методов, лучший способ (самый эффективный и самый простой) использует
db.dropDatabase()
источник
В командной строке сначала подключитесь к mongodb, используя следующую команду:
вы будете иметь доступ к БД с
<dbname>
.Выполните следующую команду, чтобы удалить всю базу данных:
источник
один лайнер удаленный удалить все коллекции из базы данных Монго
Заметка должна использовать --host, (-h это справка для команды mongo), а -d не является опцией, выберите db и команду после пароля.
источник
Войдите в вашу командную строку mongoDB: и введите следующие команды. использовать "YOUR_DATABASE_NAME"; db.dropDatabase ();
источник
Удалите базу данных MongoDB, используя python:
источник
БД покажет текущий тип имени базы данных: db.dropDatabase ();
1 - выберите базу данных для удаления, используя ключевое слово « use ».
2 - затем введите db.dropDatabase ();
источник
используйте следующую команду из оболочки монго, чтобы сбросить дб
источник
> use auth-users ; db.dropDatabase()
и> use auth-users; db.dropDatabase()
оба вернулись[thread1] Error: [auth-users ; db.dropD atabase()] is not a valid database name :