¿Cuál es la forma más fácil de hacer esto desde mi solicitud de bash?
¿Cuál es la forma más fácil de hacer esto desde mi solicitud de bash?
Respuestas:
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
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:
> use mydb;
> db.dropDatabase();
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.
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 el dropDatabase
comando y suelte accidentalmente una segunda base de datos.
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 }
No necesita heredocs o eval , mongo
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.
.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í, si filename
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ón ps
, no la cadena de exec
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 todo strace
.
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.
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 luego
db.dropDatabase()
directamente desde el símbolo del sistema o blash: mongo mydb --eval "db.dropDatabase()
Otra manera:
echo "db.dropDatabase()" | mongo <database name>
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.
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 mydb
todavía está en uso, por lo tanto, al insertar cualquier entrada en ese momento, se inicializará la base de datos nuevamente.
A pesar de que hay varios métodos, la mejor manera (más eficiente y fácil) es usar db.dropDatabase()
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()
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()"
Inicie sesión en su línea de comando mongoDB: y escriba los siguientes comandos. use "YOUR_DATABASE_NAME"; db.dropDatabase ();
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")
use el siguiente comando de mongo shell para soltar db
utilizar ; db.dropDatabase ();
> 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 :