W moim przypadku było to bardzo pomocne. W jakiś sposób miałem bazę danych o nazwie „mean-dev” ze starszej instalacji, a wpisanie „mean-dev.dropDatabase ()” w powłoce mangowej spowodowało „ReferenceError: średnia nie jest zdefiniowana”. Ale skorzystanie z rozwiązania w tej odpowiedzi rozwiązało problem. +1
KP MacGregor
22
Jeśli chcesz uzyskać wynik czytelny dla człowieka, zrób to w ten sposób: mongo <dbname> --eval "printjson(db.dropDatabase())"
Myślę, że ma na myśli bezpośrednio z monitu, prawda? W takim przypadku musisz wygenerować plik .js za pomocą tych poleceń i wywołać go z wiersza polecenia za pomocą „mongo dropdb.js” lub coś w tym stylu lub zrobić to, co chcesz i ręcznie usunąć pliki.
Remon van Vliet,
2
ale pamiętaj, że nie możesz użyć usepolecenia w pliku .js, musisz połączyć się z konkretnym DB (podaj nazwę
db
46
Wskazówka: po usunięciu bazy danych możesz wyjść z powłoki mongo i usunąć ~/.dbshellplik, aby wyczyścić historię poleceń. (Może to być lepszy sposób - nie jestem pewien.) Robię to, ponieważ w przeciwieństwie do SQL polecenie mongo do usunięcia bazy danych tak naprawdę nie odwołuje się do nazwy bazy danych do usunięcia - po prostu usuwa baza danych, z którą klient jest obecnie podłączony. Wyczyszczenie historii poleceń zapobiegnie przypadkowemu odtworzeniu dropDatabasepolecenia i niezamierzonemu upuszczeniu drugiej bazy danych.
Chris Allen Lane
3
To sprytny pomysł, @chrisallenlane. Powłoka mongodb jest czasami dość niebezpiecznym narzędziem ... :)
mnemosyn,
Ostrzeżenie: jeśli upuścisz bazę danych i utworzysz nową bazę danych o tej samej nazwie, musisz zrestartować wszystkie instancje mongo lub użyć komendy flushRouterConfig na wszystkich instancjach mongo przed odczytem lub zapisaniem do tej bazy danych. Ta akcja zapewnia, że instancje mongo odświeżą swoją pamięć podręczną metadanych, w tym lokalizację podstawowego odłamka dla nowej bazy danych. W przeciwnym razie mongorze mogą pomijać dane podczas odczytu i mogą zapisywać dane w złym odłamku.
Lekr0
114
Znalazłem to łatwe do zapamiętania:
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 }
Zauważ, że nazwa skryptu musi kończyć się .js, w przeciwnym razie będzie interpretowana jako adres db.
Vegard
1
@Vegard To nie jest poprawne. Pracujesz, mongo filenameco jest niepotrzebne - plik ma już interpreter w górnym wierszu. Po prostu zrób plik wykonywalny i uruchom go./filename
mikemaccana
@mikemaccana Wiem o tym, ale robienie ./filenamenaprawdę będzie działać /usr/bin/env mongo filename, prawda? Jeśli więc filenamesię nie skończy .py, mongo nie rozpozna argumentu jako skryptu do uruchomienia.
Vegard
„Wykonanie ./nazwa_pliku faktycznie uruchomi plik / usr / bin / env mongo, prawda?” Nie. Sprawdź wydajność ps.
mikemaccana
@mikemaccana Dane wyjściowe pspokazują tylko to, co jest uruchomione podczas wywoływania ps, a nie ciąg execwywołań prowadzących do tego punktu ani pracę, którą jądro wykonało, aby załadować i wykonać plik. Jeśli chcesz wiedzieć, co się naprawdę dzieje, powinieneś napisać wrapper /usr/bin/env, ustawić go jako plik wykonywalny w linii shebang, a następnie rozpocząć strace.
kbolino,
31
Uruchom MongoDB
Polecenie upuszczenia bazy danych to:
1. najpierw wybierz bazę danych, którą chcesz usunąć
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.
Ta sama odpowiedź jak ta , która została podana miesiąc wcześniej.
Dan Dascalescu,
10
Otwórz inne okno terminala i wykonaj następujące polecenia,
mongodb
use mydb
db.dropDatabase()
Wynik tej operacji powinien wyglądać następująco
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}>
Należy pamiętać, że mydbnadal jest w użyciu, dlatego wstawienie danych wejściowych w tym czasie spowoduje ponowne zainicjowanie bazy danych.
w jaki sposób to polecenie określa, która baza danych ma zostać usunięta? Z bazy danych o nazwie „auth-użytkowników” Próbowałem > use auth-users ; db.dropDatabase()i > use auth-users; db.dropDatabase()i obaj wrócili[thread1] Error: [auth-users ; db.dropD atabase()] is not a valid database name :
Odpowiedzi:
Lubię to:
Więcej informacji na temat skryptowania powłoki z wiersza poleceń tutaj: https://docs.mongodb.com/manual/tutorial/write-scripts-for-the-mongo-shell/#scripting
źródło
mongo <dbname> --eval "printjson(db.dropDatabase())"
mongo <yourDb> --host <yourHost> --port <yourPort> --eval 'db.dropDatabase()'
Najlepszym sposobem na to jest z konsoli mongodb:
Możesz też zatrzymać
mongod
i usunąć pliki danych z katalogu danych, a następnie uruchomić ponownie.Wskazówka: możesz również przenieść pliki danych do podfolderu i usunąć je, jeśli masz pewność, że już ich nie potrzebujesz.
źródło
use
polecenia w pliku .js, musisz połączyć się z konkretnym DB (podaj nazwę~/.dbshell
plik, aby wyczyścić historię poleceń. (Może to być lepszy sposób - nie jestem pewien.) Robię to, ponieważ w przeciwieństwie do SQL polecenie mongo do usunięcia bazy danych tak naprawdę nie odwołuje się do nazwy bazy danych do usunięcia - po prostu usuwa baza danych, z którą klient jest obecnie podłączony. Wyczyszczenie historii poleceń zapobiegnie przypadkowemu odtworzeniudropDatabase
polecenia i niezamierzonemu upuszczeniu drugiej bazy danych.Znalazłem to łatwe do zapamiętania:
źródło
Nie potrzebujesz heredoków ani ewaluacji ,
mongo
sam może działać jako tłumacz.Ustaw plik jako wykonywalny i uruchom go.
źródło
.js
, w przeciwnym razie będzie interpretowana jako adres db.mongo filename
co jest niepotrzebne - plik ma już interpreter w górnym wierszu. Po prostu zrób plik wykonywalny i uruchom go./filename
./filename
naprawdę będzie działać/usr/bin/env mongo filename
, prawda? Jeśli więcfilename
się nie skończy.py
, mongo nie rozpozna argumentu jako skryptu do uruchomienia.ps
.ps
pokazują tylko to, co jest uruchomione podczas wywoływaniaps
, a nie ciągexec
wywołań prowadzących do tego punktu ani pracę, którą jądro wykonało, aby załadować i wykonać plik. Jeśli chcesz wiedzieć, co się naprawdę dzieje, powinieneś napisać wrapper/usr/bin/env
, ustawić go jako plik wykonywalny w linii shebang, a następnie rozpocząćstrace
.Uruchom MongoDB
Polecenie upuszczenia bazy danych to:
1. najpierw wybierz bazę danych, którą chcesz usunąć
2. Następnie użyj tego ..
źródło
Możesz także użyć „heredoc”:
Wyniki wyjściowe, takie jak:
Lubię używać heredoków do takich rzeczy, na wypadek, gdybyś potrzebował bardziej złożonej sekwencji poleceń.
źródło
Inny sposób:
źródło
Oto niektóre operacje pełnego usuwania dla mongodb przy użyciu powłoki mongo
Aby usunąć określony dokument ze zbiorów:
db.mycollection.remove( {name:"stack"} )
Aby usunąć wszystkie dokumenty ze zbiorów:
db.mycollection.remove()
Aby usunąć kolekcję :
db.mycollection.drop()
aby usunąć bazę danych : najpierw przejdź do tej bazy danych za pomocą
use mydb
polecenia, a następniebezpośrednio z wiersza polecenia lub blash:
mongo mydb --eval "db.dropDatabase()
źródło
Wykonaj w terminalu:
źródło
Otwórz inne okno terminala i wykonaj następujące polecenia,
Wynik tej operacji powinien wyglądać następująco
Należy pamiętać, że
mydb
nadal jest w użyciu, dlatego wstawienie danych wejściowych w tym czasie spowoduje ponowne zainicjowanie bazy danych.źródło
Za pomocą Javascript możesz łatwo utworzyć skrypt drop_bad.js, aby usunąć bazę danych:
utwórz drop_bad.js :
Następnie uruchom 1 polecenie w terminalu, aby wykonać skrypt za pomocą powłoki mongo:
źródło
Chociaż istnieje kilka metod, najlepszym sposobem (najbardziej wydajnym i najłatwiejszym) jest użycie
db.dropDatabase()
źródło
W wierszu polecenia najpierw połącz się z mongodb, używając następującego polecenia:
będziesz uzyskiwać dostęp do bazy danych za pomocą
<dbname>
.Uruchom następujące polecenie, aby usunąć całą bazę danych:
źródło
jeden liner zdalny usuwa wszystkie kolekcje z bazy danych mongo
Uwaga musi używać --host, (-h to pomoc dla polecenia mongo), a -d nie jest opcją, wybierz db i polecenie po haśle.
źródło
Zaloguj się do wiersza polecenia mongoDB: i wpisz poniższe polecenia. użyj „YOUR_DATABASE_NAME”; db.dropDatabase ();
źródło
Upuść bazę danych MongoDB, używając Pythona:
źródło
db wyświetli bieżący typ nazwy bazy danych: db.dropDatabase ();
1- wybierz bazę danych do usunięcia za pomocą słowa kluczowego „ use ”.
2- następnie wpisz db.dropDatabase ();
źródło
użyj następującego polecenia z powłoki mongo, aby usunąć db
źródło
> use auth-users ; db.dropDatabase()
i> use auth-users; db.dropDatabase()
i obaj wrócili[thread1] Error: [auth-users ; db.dropD atabase()] is not a valid database name :