Quelle est la façon la plus simple de le faire à partir de mon invite bash?
Quelle est la façon la plus simple de le faire à partir de mon invite bash?
Réponses:
Comme ça:
mongo <dbname> --eval "db.dropDatabase()"
Plus d'informations sur l'écriture de scripts du shell à partir de la ligne de commande ici: 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()'
La meilleure façon de le faire est depuis la console mongodb:
> use mydb;
> db.dropDatabase();
Vous pouvez également arrêter mongod
et supprimer les fichiers de données de votre répertoire de données, puis redémarrer.
Astuce: vous pouvez également déplacer les fichiers de données vers un sous-dossier et les supprimer si vous êtes sûr de ne plus en avoir besoin.
use
commande dans le fichier .js, vous devez vous connecter à une base de données concrète (spécifiez dbname pour la commande mongo)
~/.dbshell
fichier pour effacer l'historique de vos commandes. (Il peut y avoir une meilleure façon de le faire - je ne suis pas sûr.) Je le fais parce que, contrairement à SQL, la commande mongo pour supprimer une base de données ne fait pas réellement référence au nom de la base de données à supprimer - elle supprime simplement le base de données à laquelle le client est actuellement connecté. La dropDatabase
suppression de l' historique de vos commandes vous empêchera de relire accidentellement la commande et de supprimer involontairement une deuxième base de données.
J'ai trouvé cela facile à retenir:
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 }
Vous n'avez pas besoin d'heredocs ou d'eval , mongo
lui - même peut servir d'interprète.
#!/usr/bin/env mongo
var db = new Mongo().getDB("someDatabase");
db.dropDatabase();
Rendez le fichier exécutable et exécutez-le.
.js
, sinon il sera interprété comme l'adresse db.
mongo filename
ce qui est inutile - le fichier a déjà un interpréteur sur la ligne supérieure. ./filename
./filename
va vraiment marcher /usr/bin/env mongo filename
, non? Et donc, si filename
cela ne se termine pas .py
, mongo ne reconnaîtra pas l'argument comme un script à exécuter.
ps
.
ps
ne vous montre que ce qui fonctionne au moment où vous appelez ps
, pas la chaîne d' exec
appels qui mène à ce point ni le travail que le noyau a fait pour charger et exécuter le fichier. Si vous voulez savoir ce qui se passe réellement, vous devez utiliser un wrapper autour /usr/bin/env
, le définir comme exécutable dans la ligne shebang, puis lancer le tout avec strace
.
Vous pouvez également utiliser un "hérédoc":
mongo localhost/db <<EOF
db.dropDatabase()
EOF
Résultats en sortie comme:
mongo localhost/db <<EOF
db.dropDatabase()
EOF
MongoDB shell version: 2.2.2
connecting to: localhost/db
{ "dropped" : "db", "ok" : 1 }
bye
J'aime utiliser des heredocs pour des choses comme ça, au cas où vous voudriez une séquence de commandes plus complexe.
Voici quelques-unes des opérations de suppression complète pour mongodb utilisant mongo shell
Pour supprimer un document particulier dans des collections:db.mycollection.remove( {name:"stack"} )
Pour supprimer tous les documents des collections: db.mycollection.remove()
Pour supprimer une collection : db.mycollection.drop()
pour supprimer la base de données : accédez d'abord à cette base de données par use mydb
commande, puis
db.dropDatabase()
directement depuis l'invite de commande ou blash: mongo mydb --eval "db.dropDatabase()
Autre moyen:
echo "db.dropDatabase()" | mongo <database name>
Exécuter dans un terminal:
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.
Ouvrez une autre fenêtre de terminal et exécutez les commandes suivantes,
mongodb
use mydb
db.dropDatabase()
La sortie de cette opération doit ressembler à ce qui suit
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 }
>
Veuillez noter qu'il mydb
est toujours utilisé, donc l'insertion d'une entrée à ce moment initialisera à nouveau la base de données.
Même s'il existe plusieurs méthodes, la meilleure façon (la plus efficace et la plus simple) est d'utiliser db.dropDatabase()
Dans l'invite de commandes, connectez-vous d'abord à mongodb à l'aide de la commande suivante:
mongo -h [host-name]:[port:number] -d [dbname] -u [username] -p [password]
vous accéderez à db avec <dbname>
.
Exécutez la commande suivante pour supprimer toute la base de données:
db.dropDatabase()
une télécommande liner supprimer toutes les collections de la base de données mongo
note doit utiliser --host, (-h est l'aide pour la commande mongo), et -d n'est pas une option, sélectionnez la base de données et la commande après le mot de passe.
mongo --host <mongo_host>:<mongo_port> -u <db_user> -p <db_pass> <your_db> --eval "db.dropDatabase()"
Connectez-vous à votre ligne de commande mongoDB: Et tapez les commandes ci-dessous. utilisez "YOUR_DATABASE_NAME"; db.dropDatabase ();
Supprimez une base de données MongoDB à l'aide de 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")
utiliser la commande suivante du shell mongo pour supprimer db
utilisation ; db.dropDatabase ();
> use auth-users ; db.dropDatabase()
et > use auth-users; db.dropDatabase()
et les deux retourné[thread1] Error: [auth-users ; db.dropD atabase()] is not a valid database name :