Ответы:
Нравится:
mongo <dbname> --eval "db.dropDatabase()"
Подробнее о сценарии оболочки из командной строки здесь: 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:
> use mydb;
> db.dropDatabase();
Кроме того, вы можете остановить mongod
и удалить файлы данных из вашего каталога данных, а затем перезапустить.
Подсказка: вы также можете переместить файлы данных в подпапку и удалить их, если вы уверены, что они вам больше не нужны.
use
в виду, что вы не можете использовать команду в файле .js, вам нужно подключиться к конкретной базе данных (укажите dbname для команды mongo)
~/.dbshell
файл, чтобы очистить историю команд. (Возможно, есть лучший способ сделать это - я не уверен.) Я делаю это, потому что, в отличие от SQL, команда mongo для удаления базы данных на самом деле не ссылается на имя базы данных для удаления - она просто удаляет база данных, к которой в данный момент подключен клиент. Очистка истории команд предотвратит случайное повторение dropDatabase
команды и непреднамеренное удаление второй базы данных.
Я нашел это легко запомнить:
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 }
Вам не нужны heredocs или eval , mongo
сам он может выступать в роли переводчика.
#!/usr/bin/env mongo
var db = new Mongo().getDB("someDatabase");
db.dropDatabase();
Сделайте файл исполняемым и запустите его.
.js
, в противном случае оно будет интерпретироваться как адрес БД.
mongo filename
что не нужно - файл уже имеет переводчик в верхней строке. Просто сделайте файл исполняемым и запустите его./filename
./filename
самом деле работа будет работать /usr/bin/env mongo filename
, верно? И поэтому, если filename
не заканчивается .py
, Монго не распознает аргумент как скрипт для запуска.
ps
.
ps
показывают только то, что выполняется в тот момент, когда вы вызываете ps
, а не цепочку exec
вызовов, которые приводят к этому моменту, или работу, которую ядро выполнило для загрузки и выполнения файла. Если вы хотите знать, что на самом деле происходит, вы должны написать обертку вокруг /usr/bin/env
, установить ее как исполняемый файл в строке shebang, а затем начать все с этого strace
.
Вы также можете использовать «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 для таких вещей, если вам нужна более сложная последовательность команд.
Вот некоторые из них используют полные операции удаления для mongodb, используя оболочку mongo
Чтобы удалить конкретный документ в коллекциях:db.mycollection.remove( {name:"stack"} )
Чтобы удалить все документы в коллекциях: db.mycollection.remove()
Чтобы удалить коллекцию : db.mycollection.drop()
чтобы удалить базу данных : сначала перейдите в эту базу данных по use mydb
команде, а затем
db.dropDatabase()
прямо из командной строки или blash: mongo mydb --eval "db.dropDatabase()
Другой путь:
echo "db.dropDatabase()" | mongo <database name>
Выполнить в терминале:
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.
Откройте другое окно терминала и выполните следующие команды:
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
он все еще используется, поэтому вставка любого ввода в это время снова инициализирует базу данных.
Несмотря на то, что есть несколько методов, лучший способ (самый эффективный и самый простой) использует db.dropDatabase()
В командной строке сначала подключитесь к mongodb, используя следующую команду:
mongo -h [host-name]:[port:number] -d [dbname] -u [username] -p [password]
вы будете иметь доступ к БД с <dbname>
.
Выполните следующую команду, чтобы удалить всю базу данных:
db.dropDatabase()
один лайнер удаленный удалить все коллекции из базы данных Монго
Заметка должна использовать --host, (-h это справка для команды mongo), а -d не является опцией, выберите db и команду после пароля.
mongo --host <mongo_host>:<mongo_port> -u <db_user> -p <db_pass> <your_db> --eval "db.dropDatabase()"
Войдите в вашу командную строку mongoDB: и введите следующие команды. использовать "YOUR_DATABASE_NAME"; db.dropDatabase ();
Удалите базу данных 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")
используйте следующую команду из оболочки монго, чтобы сбросить дб
использование; 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 :