Dies war in meinem Fall sehr hilfreich. Irgendwie hatte ich eine Datenbank mit dem Namen "mean-dev" aus einer älteren Installation, und die Eingabe von "mean-dev.dropDatabase ()" in die Mongo-Shell führte zu "ReferenceError: mean is not defined". Aber die Lösung in dieser Antwort zu verwenden, hat den Trick getan. +1
KP MacGregor
22
Wenn Sie ein von Menschen lesbares Ergebnis erhalten möchten, gehen Sie folgendermaßen vor: mongo <dbname> --eval "printjson(db.dropDatabase())"
Ich denke, er meint direkt von der Eingabeaufforderung, nicht wahr? In diesem Fall müssen Sie entweder eine .js-Datei mit diesen Befehlen generieren und diese über die Eingabeaufforderung mit "mongo dropdb.js" oder etwas anderem aufrufen oder die Dateien manuell ausführen und entfernen.
Remon van Vliet
2
useBeachten Sie jedoch, dass Sie den Befehl in der .js-Datei nicht verwenden können. Sie müssen eine Verbindung zur konkreten Datenbank herstellen (geben Sie den Datenbanknamen für den Mongo-Befehl an)
Betlista
46
Pro-Tipp: Nach dem Löschen einer Datenbank möchten Sie möglicherweise die Mongo-Shell beenden und Ihre ~/.dbshellDatei löschen , um den Befehlsverlauf zu löschen . (Es gibt möglicherweise einen besseren Weg, dies zu tun - ich bin mir nicht sicher.) Ich mache dies, weil der mongo-Befehl zum Löschen einer Datenbank im Gegensatz zu SQL nicht auf den Namen der zu löschenden Datenbank verweist - er löscht nur den Datenbank, mit der der Client derzeit verbunden ist. Durch Löschen Ihres Befehlsverlaufs wird verhindert, dass Sie den dropDatabaseBefehl versehentlich wiedergeben und unbeabsichtigt eine zweite Datenbank löschen .
Chris Allen Lane
3
Das ist eine kluge Idee, @chrisallenlane. Die Mongodb-Muschel ist manchmal ein ziemlich gefährliches Werkzeug ... :)
Mnemosyn
Warnung: Wenn Sie eine Datenbank löschen und eine neue Datenbank mit demselben Namen erstellen, müssen Sie entweder alle Mongos-Instanzen neu starten oder den Befehl flushRouterConfig für alle Mongos-Instanzen verwenden, bevor Sie in diese Datenbank lesen oder schreiben. Diese Aktion stellt sicher, dass die Mongos-Instanzen ihren Metadaten-Cache aktualisieren, einschließlich des Speicherorts des primären Shards für die neue Datenbank. Andernfalls können die Mongos Daten beim Lesen verpassen und Daten in einen falschen Shard schreiben.
Lekr0
114
Ich fand das leicht zu merken:
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 }
Beachten Sie, dass der Skriptname mit enden muss .js, da er sonst als Datenbankadresse interpretiert wird.
Vegard
1
@Vegard Das stimmt nicht. Sie führen aus, mongo filenamewas nicht erforderlich ist - die Datei enthält bereits einen Interpreter in der obersten Zeile. Machen Sie einfach die Datei ausführbar und führen Sie sie aus./filename
mikemaccana
@mikemaccana Ich weiß das, aber das ./filenamewird tatsächlich laufen /usr/bin/env mongo filename, oder? Wenn filenamedies nicht der Fall ist .py, erkennt Mongo das Argument nicht als auszuführendes Skript.
Vegard
"Wenn Sie ./filename ausführen, wird tatsächlich / usr / bin / env mongo Dateiname ausgeführt, oder?" Überprüfen Sie die Ausgabe von ps.
Mikemaccana
@mikemaccana Die Ausgabe von pszeigt nur an, was zum Zeitpunkt des Aufrufs ausgeführt wird ps, nicht die Aufrufkette exec, die zu diesem Punkt führt, noch die Arbeit, die der Kernel zum Laden und Ausführen der Datei geleistet hat. Wenn Sie wissen möchten, was wirklich los ist, sollten Sie einen Wrapper schreiben /usr/bin/env, diesen als ausführbare Datei in der Shebang-Zeile festlegen und dann das Ganze mit starten strace.
Kbolino
31
Starten Sie MongoDB
Der Befehl zum Löschen der Datenbank lautet:
1. Wählen Sie zuerst die Datenbank aus, die Sie löschen möchten
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.
Gleiche Antwort wie diese , die einen Monat zuvor gegeben wurde.
Dan Dascalescu
10
Öffnen Sie ein anderes Terminalfenster und führen Sie die folgenden Befehle aus:
mongodb
use mydb
db.dropDatabase()
Die Ausgabe dieser Operation muss wie folgt aussehen
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}>
Bitte beachten Sie, dass dies mydbnoch verwendet wird. Wenn Sie also zu diesem Zeitpunkt Eingaben einfügen, wird die Datenbank erneut initialisiert.
-h ist Hilfe, -d ist keine Option mehr wie `mongo --host [Hostname]: [Port: Nummer] -u [Benutzername] -p [Passwort] [Datenbankname] --eval" db.dropDatabase ( ) "`
jasenmichael
2
Ein Liner Remote entfernt alle Sammlungen aus der Mongo-Datenbank
note muss --host verwenden (-h ist Hilfe für den Mongo-Befehl), und -d ist keine Option. Wählen Sie die Datenbank und den Befehl nach dem Kennwort aus.
Wie gibt dieser Befehl an, welche Datenbank gelöscht werden soll? Mit einer Datenbank „Auth-Benutzer“ genannt habe ich versucht , > use auth-users ; db.dropDatabase()und , > use auth-users; db.dropDatabase()und beide zurück[thread1] Error: [auth-users ; db.dropD atabase()] is not a valid database name :
Antworten:
So was:
Weitere Informationen zum Skripting der Shell über die Befehlszeile finden Sie hier: https://docs.mongodb.com/manual/tutorial/write-scripts-for-the-mongo-shell/#scripting
quelle
mongo <dbname> --eval "printjson(db.dropDatabase())"
mongo <yourDb> --host <yourHost> --port <yourPort> --eval 'db.dropDatabase()'
Der beste Weg, dies zu tun, ist von der Mongodb-Konsole aus:
Alternativ können Sie
mongod
die Datendateien stoppen und aus Ihrem Datenverzeichnis löschen und anschließend neu starten.Hinweis: Sie können die Datendateien auch in einen Unterordner verschieben und löschen, wenn Sie sicher sind, dass Sie sie nicht mehr benötigen.
quelle
use
Beachten Sie jedoch, dass Sie den Befehl in der .js-Datei nicht verwenden können. Sie müssen eine Verbindung zur konkreten Datenbank herstellen (geben Sie den Datenbanknamen für den Mongo-Befehl an)~/.dbshell
Datei löschen , um den Befehlsverlauf zu löschen . (Es gibt möglicherweise einen besseren Weg, dies zu tun - ich bin mir nicht sicher.) Ich mache dies, weil der mongo-Befehl zum Löschen einer Datenbank im Gegensatz zu SQL nicht auf den Namen der zu löschenden Datenbank verweist - er löscht nur den Datenbank, mit der der Client derzeit verbunden ist. Durch Löschen Ihres Befehlsverlaufs wird verhindert, dass Sie dendropDatabase
Befehl versehentlich wiedergeben und unbeabsichtigt eine zweite Datenbank löschen .Ich fand das leicht zu merken:
quelle
Sie brauchen keine Heredocs oder Eval ,
mongo
selbst kann als Dolmetscher fungieren.Machen Sie die Datei ausführbar und führen Sie sie aus.
quelle
.js
, da er sonst als Datenbankadresse interpretiert wird.mongo filename
was nicht erforderlich ist - die Datei enthält bereits einen Interpreter in der obersten Zeile. Machen Sie einfach die Datei ausführbar und führen Sie sie aus./filename
./filename
wird tatsächlich laufen/usr/bin/env mongo filename
, oder? Wennfilename
dies nicht der Fall ist.py
, erkennt Mongo das Argument nicht als auszuführendes Skript.ps
.ps
zeigt nur an, was zum Zeitpunkt des Aufrufs ausgeführt wirdps
, nicht die Aufrufketteexec
, die zu diesem Punkt führt, noch die Arbeit, die der Kernel zum Laden und Ausführen der Datei geleistet hat. Wenn Sie wissen möchten, was wirklich los ist, sollten Sie einen Wrapper schreiben/usr/bin/env
, diesen als ausführbare Datei in der Shebang-Zeile festlegen und dann das Ganze mit startenstrace
.Starten Sie MongoDB
Der Befehl zum Löschen der Datenbank lautet:
1. Wählen Sie zuerst die Datenbank aus, die Sie löschen möchten
2. Dann benutze dies ..
quelle
Sie können auch einen "Heredoc" verwenden:
Ergebnisse in Ausgabe wie:
Ich verwende gerne Heredocs für solche Dinge, falls Sie eine komplexere Befehlsfolge wünschen.
quelle
Andere Weise:
quelle
Hier sind einige verwenden vollständige Löschvorgänge für Mongodb mit Mongo Shell
So löschen Sie ein bestimmtes Dokument in Sammlungen:
db.mycollection.remove( {name:"stack"} )
So löschen Sie alle Dokumente in Sammlungen:
db.mycollection.remove()
So löschen Sie die Sammlung :
db.mycollection.drop()
So löschen Sie die Datenbank : Gehen Sie zuerst per
use mydb
Befehl zu dieser Datenbank und danndirekt von der Eingabeaufforderung oder Blash:
mongo mydb --eval "db.dropDatabase()
quelle
In einem Terminal ausführen:
quelle
Öffnen Sie ein anderes Terminalfenster und führen Sie die folgenden Befehle aus:
Die Ausgabe dieser Operation muss wie folgt aussehen
Bitte beachten Sie, dass dies
mydb
noch verwendet wird. Wenn Sie also zu diesem Zeitpunkt Eingaben einfügen, wird die Datenbank erneut initialisiert.quelle
Mit Javascript können Sie ganz einfach ein drop_bad.js- Skript erstellen , um Ihre Datenbank zu löschen :
create drop_bad.js :
Führen Sie dann 1 Befehl im Terminal aus, um das Skript mithilfe der Mongo-Shell auszuführen:
quelle
Obwohl es mehrere Methoden gibt, ist der beste (effizienteste und einfachste) Weg die Verwendung
db.dropDatabase()
quelle
Stellen Sie an Ihrer Eingabeaufforderung zunächst mit dem folgenden Befehl eine Verbindung zu mongodb her:
Sie werden mit db auf db zugreifen
<dbname>
.Führen Sie den folgenden Befehl aus, um die gesamte Datenbank zu löschen:
quelle
Ein Liner Remote entfernt alle Sammlungen aus der Mongo-Datenbank
note muss --host verwenden (-h ist Hilfe für den Mongo-Befehl), und -d ist keine Option. Wählen Sie die Datenbank und den Befehl nach dem Kennwort aus.
quelle
Melden Sie sich in Ihrer mongoDB-Befehlszeile an: Geben Sie die folgenden Befehle ein. benutze "YOUR_DATABASE_NAME"; db.dropDatabase ();
quelle
Löschen Sie eine MongoDB-Datenbank mit Python:
quelle
db zeigt den aktuellen Datenbanknamen an: db.dropDatabase ();
1- Wählen Sie die zu löschende Datenbank mit dem Schlüsselwort ' use ' aus.
2- Geben Sie dann db.dropDatabase () ein.
quelle
Verwenden Sie den folgenden Befehl aus der Mongo-Shell, um die Datenbank zu löschen
quelle
> use auth-users ; db.dropDatabase()
und ,> use auth-users; db.dropDatabase()
und beide zurück[thread1] Error: [auth-users ; db.dropD atabase()] is not a valid database name :