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

¿Cuál es la forma más sencilla de hacer esto desde mi indicador de bash?

preguntado el 13 de enero de 12 a las 17:01

ver esta pregunta: stackoverflow.com/questions/3366397/…. Es muy fácil hacerlo desde el caparazón de mongo. -

20 Respuestas

Me gusta:

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

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

Respondido el 09 de junio de 16 a las 20:06

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 is not defined". Pero usar la solución en esta respuesta funcionó. +1 - KP MacGregor

Si desea obtener un resultado legible por humanos, hágalo de esta manera: mongo <dbname> --eval "printjson(db.dropDatabase())" - Dmitro Uhnichenko

KP MacGregor. debería 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

La mejor forma de hacerlo es desde la consola de mongodb:

> use mydb; 
> db.dropDatabase();

Alternativamente, puede detener mongod y elimine los archivos de datos de su directorio de datos, luego reinicie.

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

Respondido el 09 de Septiembre de 16 a las 19:09

Creo que se refiere directamente desde el mensaje, ¿no es así? En ese caso, tiene que generar un archivo .js con esos comandos e invocarlo desde el indicador usando "mongo dropdb.js" o algo o hacer lo que diga y eliminar los archivos manualmente. - Remón van Vliet

pero ten en cuenta que no puedes usar use comando en el archivo .js, debe conectarse a la base de datos concreta (especifique el nombre de la base de datos para el comando mongo) - Betlista

Consejo profesional: después de eliminar una base de datos, es posible que desee salir del shell mongo y eliminar su ~/.dbshell archivo 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 la base de datos a la que el cliente está conectado actualmente. Borrar su historial de comandos evitará que reproduzca accidentalmente el dropDatabase comando y sin querer dejar caer una segunda base de datos. - Carril de Chris Allen

Esa es una idea inteligente, @chrisallenlane. El shell mongodb es una herramienta bastante peligrosa a veces ... :) - mnemosyn

Aviso: Si descarta una base de datos y crea una nueva con el mismo nombre, debe reiniciar todas las instancias de mongos o usar 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 principal de 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

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 }

Respondido 01 Abr '18, 15:04

No necesitas heredocs o eval, mongo ella misma puede 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.

Respondido el 04 de enero de 17 a las 10:01

Tenga en cuenta que el nombre del script debe terminar con .js, de lo contrario se interpretará como la dirección db. - vegano

@Vegard Eso no es correcto. Estas corriendo mongo filename lo cual es innecesario: el archivo ya tiene un intérprete en la línea superior. Simplemente haga que el archivo sea ejecutable y ejecútelo ./filename - mikemaccana

@mikemaccana Lo sé, pero haciendo ./filename realmente correrá /usr/bin/env mongo filename, ¿Derecha? Y si filename no termina en .py, mongo no reconocerá el argumento como un script para ejecutar. - vegano

"Hacer ./filename realmente ejecutará / usr / bin / env mongo filename, ¿verdad?" No. Compruebe la salida de ps. - mikemaccana

@mikemaccana La salida de ps solo muestra lo que se está ejecutando en el momento en que lo invoca ps, no la cadena de exec llamadas que conducen a ese punto ni el trabajo que ha realizado el kernel para cargar y ejecutar el archivo. Si desea saber qué está pasando realmente, debe usar escribir un envoltorio /usr/bin/env, configúrelo como ejecutable en la línea shebang, y luego inicie todo con strace. - kbolino

Comience 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. Entonces usa esto ...

db.dropDatabase()

respondido 18 nov., 14:02

También puede utilizar un "heredoc":

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

Resultados en salida 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.

Respondido 13 Feb 13, 19:02

Aquí hay algunas operaciones de eliminación completa de uso para mongodb usando mongo shell

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

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

A eliminar colección : db.mycollection.drop()

a eliminar base de datos : primero vaya a esa base de datos por use mydb comando y luego

db.dropDatabase()

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

respondido 07 mar '18, 10:03

Otra manera:

echo "db.dropDatabase()" | mongo <database name>

Respondido el 09 de Septiembre de 13 a las 18:09

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.

Respondido 27 Oct 13, 01:10

Misma respuesta que esta, que se dio un mes antes. - Dan Dascalescu

Abra otra ventana de terminal y ejecute los siguientes comandos,

mongodb
use mydb
db.dropDatabase()

La salida de esa operación se verá como la siguiente

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

este producto está hecho por encargo con un tiempo de producción de XNUMX a XNUMX semanas mydb todavía está en uso, por lo tanto, al insertar cualquier entrada en ese momento, se inicializará la base de datos nuevamente.

Respondido 18 Oct 17, 02:10

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

Para 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

Respondido el 22 de enero de 17 a las 22:01

Abra una terminal y escriba:

mongo 

El siguiente comando debería mostrar las bases de datos enumeradas:

show dbs 

/* the <dbname> is the database you'd like to drop */
use <dbname> 

/* the below command will delete the database */
db.dropDatabase()  

Lo siguiente debe ser la salida en el terminal:

{
  "dropped": "<dbname>",
  "ok": 1
}

Respondido 15 Jul 20, 21:07

Aunque existen varios métodos, la mejor manera (la más eficiente y fácil) es usar db.dropDatabase()

Respondido el 18 de junio de 17 a las 08:06

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]

estarás accediendo a db con <dbname>.

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

db.dropDatabase()

respondido 26 mar '18, 16:03

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

one liner remote 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 la base de datos 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()"

Respondido 26 ago 19, 17:08

Sorprendido de que no hayamos visto surgir esta variación. Esto minimiza los argumentos adicionales en la línea de comando y muestra explícitamente la base de datos que se cambia a FOO y luego soltó:

$ mongo --host "mongodb://machine:port" --eval 'db.getSiblingDB("FOO").dropDatabase();'

respondido 10 nov., 20:15

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

Respondido el 17 de diciembre de 18 a las 13:12

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

Respondido 15 Abr '20, 00:04

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

1- seleccione la base de datos para eliminar usando 'utilizan el'palabra clave.

2- luego escribe db.dropDatabase ();

Respondido el 02 de enero de 20 a las 11:01

use el siguiente comando desde mongo shell para soltar db

use <database name>; 
db.dropDatabase();

contestado el 31 de mayo de 21 a las 08:05

¿Cómo especifica este comando qué base de datos eliminar? Con una base de datos llamada "auth-users" probé > use auth-users ; db.dropDatabase() y > use auth-users; db.dropDatabase() y ambos volvieron [thread1] Error: [auth-users ; db.dropD atabase()] is not a valid database name : - Mmmmm

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.