Відповіді:
Подобається це:
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 }
Вам не потрібні гередоки або еваль , mongo
сам може виступати в ролі перекладача.
#!/usr/bin/env mongo
var db = new Mongo().getDB("someDatabase");
db.dropDatabase();
Зробіть файл виконуваним і запустіть його.
.js
, інакше воно буде інтерпретуватися як db-адреса.
mongo filename
непотрібним - у верхньому рядку вже є перекладач. Просто зробіть файл виконуваним і запустіть його./filename
./filename
, що насправді буде працювати /usr/bin/env mongo filename
, правда? І тому якщо filename
не закінчиться .py
, монго не визнає аргумент як сценарій для запуску.
ps
.
ps
показує лише те, що працює під час виклику ps
, а не ланцюжок exec
дзвінків, що призводять до цього моменту, а також роботу, яку ядро виконало для завантаження та виконання файлу. Якщо ви хочете знати, що насправді відбувається, вам слід скористатись обгорткою навколо /usr/bin/env
, встановити її як виконуваний файл у рядку shebang, а потім розпочати всю справу strace
.
Ви також можете використовувати "гередок":
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
Мені подобається використовувати гередоки для таких речей, якщо вам потрібна більш складна послідовність команд.
Інший шлях:
echo "db.dropDatabase()" | mongo <database name>
Ось деякі операції повного видалення mongodb за допомогою оболонки mongo
Щоб видалити конкретний документ із колекцій:db.mycollection.remove( {name:"stack"} )
Щоб видалити всі документи з колекцій: db.mycollection.remove()
Щоб видалити колекцію : db.mycollection.drop()
для видалення бази даних : спочатку перейдіть до цієї бази даних за use mydb
командою, а потім
db.dropDatabase()
безпосередньо з командного рядка або рядка: mongo mydb --eval "db.dropDatabase()
Виконати в терміналі:
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]
ви будете отримувати доступ до db за допомогою <dbname>
.
Виконайте таку команду, щоб скинути всю базу даних:
db.dropDatabase()
один лайнер віддалено видаляє всі колекції з бази даних mongo
Примітка повинна використовувати --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 використовуйте наступну команду з оболонки mongo
використання; 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 :