Was ist der einfachste Weg, dies über meine Bash-Eingabeaufforderung zu tun?
Was ist der einfachste Weg, dies über meine Bash-Eingabeaufforderung zu tun?
Antworten:
So was:
mongo <dbname> --eval "db.dropDatabase()"
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
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:
> use mydb;
> db.dropDatabase();
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.
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 den dropDatabase
Befehl versehentlich wiedergeben und unbeabsichtigt eine zweite Datenbank löschen .
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 }
Sie brauchen keine Heredocs oder Eval , mongo
selbst kann als Dolmetscher fungieren.
#!/usr/bin/env mongo
var db = new Mongo().getDB("someDatabase");
db.dropDatabase();
Machen Sie die Datei ausführbar und führen Sie sie aus.
.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? Wenn filename
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 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
.
Sie können auch einen "Heredoc" verwenden:
mongo localhost/db <<EOF
db.dropDatabase()
EOF
Ergebnisse in Ausgabe wie:
mongo localhost/db <<EOF
db.dropDatabase()
EOF
MongoDB shell version: 2.2.2
connecting to: localhost/db
{ "dropped" : "db", "ok" : 1 }
bye
Ich verwende gerne Heredocs für solche Dinge, falls Sie eine komplexere Befehlsfolge wünschen.
Andere Weise:
echo "db.dropDatabase()" | mongo <database name>
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 dann
db.dropDatabase()
direkt von der Eingabeaufforderung oder Blash: mongo mydb --eval "db.dropDatabase()
In einem Terminal ausführen:
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.
Ö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 mydb
noch verwendet wird. Wenn Sie also zu diesem Zeitpunkt Eingaben einfügen, wird die Datenbank erneut initialisiert.
Obwohl es mehrere Methoden gibt, ist der beste (effizienteste und einfachste) Weg die Verwendung db.dropDatabase()
Stellen Sie an Ihrer Eingabeaufforderung zunächst mit dem folgenden Befehl eine Verbindung zu mongodb her:
mongo -h [host-name]:[port:number] -d [dbname] -u [username] -p [password]
Sie werden mit db auf db zugreifen <dbname>
.
Führen Sie den folgenden Befehl aus, um die gesamte Datenbank zu löschen:
db.dropDatabase()
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.
mongo --host <mongo_host>:<mongo_port> -u <db_user> -p <db_pass> <your_db> --eval "db.dropDatabase()"
Melden Sie sich in Ihrer mongoDB-Befehlszeile an: Geben Sie die folgenden Befehle ein. benutze "YOUR_DATABASE_NAME"; db.dropDatabase ();
Löschen Sie eine MongoDB-Datenbank mit 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")
Verwenden Sie den folgenden Befehl aus der Mongo-Shell, um die Datenbank zu löschen
verwenden ; db.dropDatabase ();
> 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 :