Як я можу видалити базу даних 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 не визначено". Але використання рішення у цій відповіді зробило трюк. +1
KP MacGregor

22
Якщо ви хочете отримати результат, зрозумілий для людини, зробіть це так: mongo <dbname> --eval "printjson(db.dropDatabase())"
Дмитро Ухніченко

1
К. П. Макгрегор. ви повинні були: "use mean-dev" + "db.dropDatabase ()"
ozma

Дякую. Ось як можна налаштувати хост і порт: mongo <yourDb> --host <yourHost> --port <yourPort> --eval 'db.dropDatabase()'
Клеменс

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

Попередження: Якщо ви скидаєте базу даних і створюєте нову базу даних з тим самим іменем, вам слід або перезапустити всі екземпляри монго, або скористатися командою flushRouterConfig для всіх екземплярів монго, перш ніж читати або записувати в цю базу даних. Ця дія гарантує, що екземпляри монгос оновлять кеш метаданих, включаючи розташування основного фрагмента нової бази даних. В іншому випадку монги можуть пропустити дані про прочитані та можуть записати дані в неправильний фрагмент.
Lekr0

114

Мені це було легко запам'ятати:

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

Вам не потрібні гередоки або еваль , mongoсам може виступати в ролі перекладача.

#!/usr/bin/env mongo
var db = new Mongo().getDB("someDatabase");
db.dropDatabase();

Зробіть файл виконуваним і запустіть його.


3
Зверніть увагу, що ім'я сценарію повинно закінчуватися .js, інакше воно буде інтерпретуватися як db-адреса.
Вегард

1
@Vegard Це неправильно. Ви працюєте з mongo filenameнепотрібним - у верхньому рядку вже є перекладач. Просто зробіть файл виконуваним і запустіть його./filename
mikemaccana

@mikemaccana Я це знаю, але все ./filename, що насправді буде працювати /usr/bin/env mongo filename, правда? І тому якщо filenameне закінчиться .py, монго не визнає аргумент як сценарій для запуску.
Вегард

"Файл ./name буде фактично запускати / usr / bin / env mongo ім'я файлу, правда?" Ні. Перевірте вихід ps.
mikemaccana

@mikemaccana Результат psпоказує лише те, що працює під час виклику ps, а не ланцюжок execдзвінків, що призводять до цього моменту, а також роботу, яку ядро ​​виконало для завантаження та виконання файлу. Якщо ви хочете знати, що насправді відбувається, вам слід скористатись обгорткою навколо /usr/bin/env, встановити її як виконуваний файл у рядку shebang, а потім розпочати всю справу strace.
kbolino

31

Запустіть MongoDB

Команда для падіння бази даних:

1. спочатку виберіть базу даних, яку потрібно видалити

use < database name >

2. Потім скористайтеся цим ..

db.dropDatabase()

28

Ви також можете використовувати "гередок":

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

Мені подобається використовувати гередоки для таких речей, якщо вам потрібна більш складна послідовність команд.



18

Ось деякі операції повного видалення mongodb за допомогою оболонки mongo

Щоб видалити конкретний документ із колекцій:db.mycollection.remove( {name:"stack"} )

Щоб видалити всі документи з колекцій: db.mycollection.remove()

Щоб видалити колекцію : db.mycollection.drop()

для видалення бази даних : спочатку перейдіть до цієї бази даних за use mydbкомандою, а потім

db.dropDatabase()

безпосередньо з командного рядка або рядка: 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]

ви будете отримувати доступ до db за допомогою <dbname>.

Виконайте таку команду, щоб скинути всю базу даних:

db.dropDatabase()

-h - довідка, -d - не варіант, схожий на `mongo --host [ім'я хоста]: [порт: номер] -u [ім'я користувача] -p [пароль] [dbname] --eval" db.dropDatabase ( ) "`
jasenmichael

2

один лайнер віддалено видаляє всі колекції з бази даних mongo

Примітка повинна використовувати --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 покаже поточний тип назви бази даних: db.dropDatabase ();

1- виберіть базу даних, яку потрібно скинути, використовуючи ключове слово ' use '.

2- потім введіть db.dropDatabase ();


-2

Для скидання db використовуйте наступну команду з оболонки mongo

використання; db.dropDatabase ();


як ця команда визначає, яку базу даних потрібно скинути? У базі даних під назвою «Auth-користувачів» Я пробував > 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.