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.
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 }
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
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.
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.
-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.
¿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 :
Respuestas:
Me gusta esto:
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
fuente
mongo <dbname> --eval "printjson(db.dropDatabase())"
mongo <yourDb> --host <yourHost> --port <yourPort> --eval 'db.dropDatabase()'
La mejor manera de hacerlo es desde la consola mongodb:
Alternativamente, puede detener
mongod
y 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.
fuente
use
comando en el archivo .js, debe conectarse a una base de datos concreta (especifique dbname para el comando mongo)~/.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 el base de datos a la que el cliente está conectado actualmente. Borrar el historial de comandos evitará que accidentalmente repita eldropDatabase
comando y suelte accidentalmente una segunda base de datos.Encontré esto fácil de recordar:
fuente
No necesita heredocs o eval ,
mongo
puede actuar como intérprete.Haga que el archivo sea ejecutable y ejecútelo.
fuente
.js
, de lo contrario, se interpretará como la dirección db.mongo filename
cual es innecesario: el archivo ya tiene un intérprete en la línea superior. Simplemente haga el archivo ejecutable y ejecútelo./filename
./filename
realidad funcionará/usr/bin/env mongo filename
, ¿verdad? Y así, sifilename
no termina en.py
, mongo no reconocerá el argumento como un script para ejecutar.ps
.ps
solo muestra lo que se está ejecutando en el momento de la invocaciónps
, no la cadena deexec
llamadas 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 todostrace
.Inicie MongoDB
El comando para la caída de la base de datos es:
1. primero seleccione la base de datos que desea eliminar
2. Luego usa esto ...
fuente
También podría usar un "heredoc":
Resultados en resultados como:
Me gusta usar heredocs para cosas como esta, en caso de que desee una secuencia de comandos más compleja.
fuente
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 mydb
comando y luegodirectamente desde el símbolo del sistema o blash:
mongo mydb --eval "db.dropDatabase()
fuente
Otra manera:
fuente
Ejecutar en una terminal:
fuente
Abra otra ventana de terminal y ejecute los siguientes comandos,
La salida de esa operación tendrá el siguiente aspecto
Tenga en cuenta que
mydb
todavía está en uso, por lo tanto, al insertar cualquier entrada en ese momento, se inicializará la base de datos nuevamente.fuente
Con Javascript, puede crear fácilmente un script drop_bad.js para descartar su base de datos:
crear drop_bad.js :
Luego ejecute 1 comando en la terminal para ejecutar el script usando mongo shell:
fuente
A pesar de que hay varios métodos, la mejor manera (más eficiente y fácil) es usar
db.dropDatabase()
fuente
En su símbolo del sistema, primero conéctese a mongodb usando el siguiente comando:
accederás a db con
<dbname>
.Ejecute el siguiente comando para descartar toda la base de datos:
fuente
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.
fuente
Inicie sesión en su línea de comando mongoDB: y escriba los siguientes comandos. use "YOUR_DATABASE_NAME"; db.dropDatabase ();
fuente
Descarte una base de datos MongoDB usando python
fuente
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 ();
fuente
use el siguiente comando de mongo shell para soltar db
fuente
> 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 :