¿Cómo elimino una base de datos MongoDB de la línea de comando?

Respuestas:

1084

Me gusta esto:

mongo <dbname> --eval "db.dropDatabase()"

Más información sobre la secuencia de comandos del shell desde la línea de comando aquí: https://docs.mongodb.com/manual/tutorial/write-scripts-for-the-mongo-shell/#scripting

Tim Gautier
fuente
Esto fue muy útil en mi caso. De alguna manera tenía una base de datos llamada "mean-dev" de una instalación anterior, y al ingresar "mean-dev.dropDatabase ()" en el shell de mongo resultó en "ReferenceError: mean no está definido". Pero usar la solución en esta respuesta hizo el truco. +1
KP MacGregor
22
Si desea obtener un resultado legible para humanos, hágalo de esta manera: mongo <dbname> --eval "printjson(db.dropDatabase())"
Dmytro Uhnichenko
1
KP MacGregor. deberías haber sido: "use mean-dev" + "db.dropDatabase ()"
ozma
Gracias. Así es como puede personalizar el host y el puerto: mongo <yourDb> --host <yourHost> --port <yourPort> --eval 'db.dropDatabase()'
Clemens
844

La mejor manera de hacerlo es desde la consola mongodb:

> use mydb; 
> db.dropDatabase();

Alternativamente, puede detener mongody eliminar los archivos de datos de su directorio de datos, luego reiniciar.

Sugerencia: también puede mover los archivos de datos a una subcarpeta y eliminarlos si está seguro de que ya no los necesita.

mnemosyn
fuente
2
Creo que quiere decir directamente desde el mensaje, ¿no? En ese caso, debe generar un archivo .js con esos comandos e invocarlo desde el indicador utilizando "mongo dropdb.js" o algo así o hacer lo que usted dice y eliminar los archivos manualmente.
Remon van Vliet
2
pero tenga en cuenta que no puede usar el usecomando en el archivo .js, debe conectarse a una base de datos concreta (especifique dbname para el comando mongo)
Betlista
46
Consejo profesional: después de soltar una base de datos, es posible que desee salir del shell mongo y eliminar su ~/.dbshellarchivo para borrar su historial de comandos. (Puede haber una mejor manera de hacerlo, no estoy seguro). Hago esto porque, a diferencia de SQL, el comando mongo para eliminar una base de datos en realidad no hace referencia al nombre de la base de datos para eliminar , simplemente elimina el base de datos a la que el cliente está conectado actualmente. Borrar el historial de comandos evitará que accidentalmente repita el dropDatabasecomando y suelte accidentalmente una segunda base de datos.
Chris Allen Lane
3
Esa es una idea inteligente, @chrisallenlane. El shell mongodb es una herramienta bastante peligrosa a veces ... :)
mnemosyn
Advertencia: si suelta una base de datos y crea una nueva base de datos con el mismo nombre, debe reiniciar todas las instancias de mongos o utilizar el comando flushRouterConfig en todas las instancias de mongos antes de leer o escribir en esa base de datos. Esta acción garantiza que las instancias de mongos actualicen su caché de metadatos, incluida la ubicación del fragmento primario para la nueva base de datos. De lo contrario, los mongos pueden perder datos en las lecturas y pueden escribir datos en un fragmento incorrecto.
Lekr0
115

Encontré esto fácil de recordar:

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 }
Alex Baban
fuente
113

No necesita heredocs o eval , mongopuede actuar como intérprete.

#!/usr/bin/env mongo
var db = new Mongo().getDB("someDatabase");
db.dropDatabase();

Haga que el archivo sea ejecutable y ejecútelo.

mikemaccana
fuente
3
Tenga en cuenta que el nombre del script debe terminar con .js, de lo contrario, se interpretará como la dirección db.
Vegard el
1
@Vegard Eso no es correcto. Está ejecutando, lo mongo filenamecual es innecesario: el archivo ya tiene un intérprete en la línea superior. Simplemente haga el archivo ejecutable y ejecútelo./filename
Mikemaccana
@mikemaccana Lo sé, pero en ./filenamerealidad funcionará /usr/bin/env mongo filename, ¿verdad? Y así, si filenameno termina en .py, mongo no reconocerá el argumento como un script para ejecutar.
Vegard
"Hacer ./filename realmente ejecutará / usr / bin / env mongo filename, ¿verdad?" No. Verifique la salida de ps.
mikemaccana
@mikemaccana El resultado de pssolo muestra lo que se está ejecutando en el momento de la invocación ps, no la cadena de execllamadas que conducen a ese punto ni el trabajo que el núcleo ha realizado para cargar y ejecutar el archivo. Si desea saber qué está sucediendo realmente, debe usar escribir un contenedor /usr/bin/env, configurarlo como el ejecutable en la línea shebang y luego comenzar todo strace.
kbolino
31

Inicie MongoDB

El comando para la caída de la base de datos es:

1. primero seleccione la base de datos que desea eliminar

use < database name >

2. Luego usa esto ...

db.dropDatabase()
bud-e
fuente
28

También podría usar un "heredoc":

mongo localhost/db <<EOF
db.dropDatabase()
EOF

Resultados en resultados como:

mongo localhost/db <<EOF
db.dropDatabase()
EOF
MongoDB shell version: 2.2.2
connecting to: localhost/db
{ "dropped" : "db", "ok" : 1 }    
bye

Me gusta usar heredocs para cosas como esta, en caso de que desee una secuencia de comandos más compleja.

David
fuente
19

Estas son algunas de las operaciones de eliminación completa de mongodb que usan mongo shell

Para eliminar un documento particular en colecciones:db.mycollection.remove( {name:"stack"} )

Para eliminar todos los documentos en colecciones: db.mycollection.remove()

Para eliminar la colección : db.mycollection.drop()

para eliminar la base de datos : primero vaya a esa base de datos por use mydbcomando y luego

db.dropDatabase()

directamente desde el símbolo del sistema o blash: mongo mydb --eval "db.dropDatabase()

bhv
fuente
18

Otra manera:

echo "db.dropDatabase()" | mongo <database name>
Gabriel Mancini
fuente
15

Ejecutar en una 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.
Anderson Lopes
fuente
1
La misma respuesta que esta , que se dio un mes antes.
Dan Dascalescu
10

Abra otra ventana de terminal y ejecute los siguientes comandos,

mongodb
use mydb
db.dropDatabase()

La salida de esa operación tendrá el siguiente aspecto

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 }
>

Tenga en cuenta que mydbtodavía está en uso, por lo tanto, al insertar cualquier entrada en ese momento, se inicializará la base de datos nuevamente.

helcode
fuente
4

Con Javascript, puede crear fácilmente un script drop_bad.js para descartar su base de datos:

crear drop_bad.js :

use bad;
db.dropDatabase();

Luego ejecute 1 comando en la terminal para ejecutar el script usando mongo shell:

mongo < drop_bad.js
sergiuz
fuente
2

A pesar de que hay varios métodos, la mejor manera (más eficiente y fácil) es usar db.dropDatabase()

Vitanage Lakmal
fuente
2

En su símbolo del sistema, primero conéctese a mongodb usando el siguiente comando:

mongo -h [host-name]:[port:number] -d [dbname] -u [username] -p [password]

accederás a db con <dbname>.

Ejecute el siguiente comando para descartar toda la base de datos:

db.dropDatabase()
TechGuy
fuente
-h es ayuda, -d no es una opción más como `mongo --host [host-name]: [puerto: número] -u [nombre de usuario] -p [contraseña] [dbname] --eval" db.dropDatabase ( ) "`
jasenmichael
2

un control remoto remoto elimina todas las colecciones de la base de datos mongo

note debe usar --host, (-h es ayuda para el comando mongo), y -d no es una opción, seleccione el db y el comando después de la contraseña.

mongo --host <mongo_host>:<mongo_port> -u <db_user> -p <db_pass> <your_db> --eval "db.dropDatabase()"
jasenmichael
fuente
0

Inicie sesión en su línea de comando mongoDB: y escriba los siguientes comandos. use "YOUR_DATABASE_NAME"; db.dropDatabase ();

Shrinivas Kalangutkar
fuente
0

Descarte una base de datos MongoDB usando 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")
Joe Drumgoole
fuente
-1

db mostrará el tipo de nombre de la base de datos actual: db.dropDatabase ();

1- seleccione la base de datos para soltar usando la palabra clave ' use '.

2- luego escribe db.dropDatabase ();

nixxo_raa
fuente
-2

use el siguiente comando de mongo shell para soltar db

utilizar ; db.dropDatabase ();

Anoop Sharma
fuente
¿Cómo especifica este comando qué base de datos descartar? Con una base de datos llamada "auth-usuarios" Probé > use auth-users ; db.dropDatabase()y > use auth-users; db.dropDatabase()y ambos regresaron[thread1] Error: [auth-users ; db.dropD atabase()] is not a valid database name :
Mr. Kennedy