Comment supprimer une base de données MongoDB de la ligne de commande?


Réponses:


1084

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


Cela a été très utile dans mon cas. D'une manière ou d'une autre, j'avais une base de données nommée "mean-dev" à partir d'une ancienne installation, et la saisie de "mean-dev.dropDatabase ()" dans le shell mongo avait pour résultat "ReferenceError: la moyenne n'est pas définie". Mais l'utilisation de la solution dans cette réponse a fait l'affaire. +1
KP MacGregor

22
Si vous voulez obtenir un résultat lisible par l'homme, faites-le de cette façon: mongo <dbname> --eval "printjson(db.dropDatabase())"
Dmytro Uhnichenko

1
KP MacGregor. vous auriez dû être: "use mean-dev" + "db.dropDatabase ()"
ozma

Merci. Voici comment personnaliser l'hôte et le port: mongo <yourDb> --host <yourHost> --port <yourPort> --eval 'db.dropDatabase()'
Clemens

844

La meilleure façon de le faire est depuis la console mongodb:

> use mydb; 
> db.dropDatabase();

Vous pouvez également arrêter mongodet 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.


2
Je pense qu'il veut dire directement à partir de l'invite n'est-ce pas? Dans ce cas, vous devez soit générer un fichier .js avec ces commandes et l'invoquer à partir de l'invite en utilisant "mongo dropdb.js" ou quelque chose ou faites ce que vous dites et supprimez les fichiers manuellement.
Remon van Vliet

2
mais sachez que vous ne pouvez pas utiliser la usecommande dans le fichier .js, vous devez vous connecter à une base de données concrète (spécifiez dbname pour la commande mongo)
Betlista

46
Astuce de pro: après avoir supprimé une base de données, vous souhaiterez peut-être quitter le shell mongo et supprimer votre ~/.dbshellfichier 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 dropDatabasesuppression 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.
Chris Allen Lane

3
C'est une idée intelligente, @chrisallenlane. Le shell mongodb est parfois un outil assez dangereux ... :)
mnemosyn

Avertissement: si vous supprimez une base de données et créez une nouvelle base de données avec le même nom, vous devez soit redémarrer toutes les instances mongos, soit utiliser la commande flushRouterConfig sur toutes les instances mongos avant de lire ou d'écrire dans cette base de données. Cette action garantit que les instances mongos actualisent leur cache de métadonnées, y compris l'emplacement du fragment principal pour la nouvelle base de données. Sinon, les mongos peuvent manquer des données sur les lectures et peuvent écrire des données dans un faux fragment.
Lekr0

115

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 }

113

Vous n'avez pas besoin d'heredocs ou d'eval , mongolui - 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.


3
Notez que le nom du script doit se terminer par .js, sinon il sera interprété comme l'adresse db.
Vegard

1
@Vegard Ce n'est pas correct. Vous exécutez mongo filenamece qui est inutile - le fichier a déjà un interpréteur sur la ligne supérieure. ./filename
Rendez

@mikemaccana Je le sais, mais ça ./filenameva vraiment marcher /usr/bin/env mongo filename, non? Et donc, si filenamecela ne se termine pas .py, mongo ne reconnaîtra pas l'argument comme un script à exécuter.
Vegard

"Faire ./filename exécutera réellement / usr / bin / env mongo filename, non?" Non. Vérifiez la sortie de ps.
mikemaccana

@mikemaccana La sortie de psne vous montre que ce qui fonctionne au moment où vous appelez ps, pas la chaîne d' execappels 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.
kbolino

31

Démarrez MongoDB

La commande pour la suppression de la base de données est:

1. sélectionnez d'abord la base de données que vous souhaitez supprimer

use < database name >

2. Ensuite, utilisez ceci ..

db.dropDatabase()

28

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.


19

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 mydbcommande, puis

db.dropDatabase()

directement depuis l'invite de commande ou blash: mongo mydb --eval "db.dropDatabase()



15

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.

1
Même réponse que celle-ci , donnée un mois plus tôt.
Dan Dascalescu

10

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 mydbest toujours utilisé, donc l'insertion d'une entrée à ce moment initialisera à nouveau la base de données.


4

En utilisant Javascript, vous pouvez facilement créer un script drop_bad.js pour supprimer votre base de données:

créez drop_bad.js :

use bad;
db.dropDatabase();

Ensuite, exécutez 1 commande dans le terminal pour exécuter le script à l'aide du shell mongo:

mongo < drop_bad.js

2

Même s'il existe plusieurs méthodes, la meilleure façon (la plus efficace et la plus simple) est d'utiliser db.dropDatabase()


2

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()

-h est une aide, -d n'est pas une option plus semblable à `mongo --host [nom-hôte]: [port: numéro] -u [nom d'utilisateur] -p [mot de passe] [nom_base] --eval" db.dropDatabase ( ) "`
jasenmichael

2

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()"

0

Connectez-vous à votre ligne de commande mongoDB: Et tapez les commandes ci-dessous. utilisez "YOUR_DATABASE_NAME"; db.dropDatabase ();


0

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")

-1

db affichera le type de nom actuel de la base de données: db.dropDatabase ();

1- Sélectionnez la base de données à supprimer en utilisant ' use le mot-clé '.

2- puis tapez db.dropDatabase ();


-2

utiliser la commande suivante du shell mongo pour supprimer db

utilisation ; db.dropDatabase ();


comment cette commande spécifie-t-elle la base de données à supprimer? Avec une base de données appelée « auth-utilisateurs » J'ai essayé > 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 :
M. Kennedy
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.