Відповіді:
Подобається це:
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 :