Qual é a maneira mais fácil de fazer isso no meu prompt do bash?
Qual é a maneira mais fácil de fazer isso no meu prompt do bash?
Respostas:
Como isso:
mongo <dbname> --eval "db.dropDatabase()"
Mais informações sobre como fazer o script do shell na linha de comando aqui: 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()'
A melhor maneira de fazer isso é no console do mongodb:
> use mydb;
> db.dropDatabase();
Como alternativa, você pode parar mongod
e excluir os arquivos de dados do seu diretório de dados e reiniciar.
Dica: você também pode mover os arquivos de dados para uma subpasta e excluí-los se tiver certeza de que não precisa mais deles.
use
comandos no arquivo .js, você tem que se conectar ao concreto DB (especificar dbname para o comando mongo)
~/.dbshell
arquivo para limpar seu histórico de comandos. (Pode haver uma maneira melhor de fazer isso - não tenho certeza.) Faço isso porque, diferentemente do SQL, o comando mongo para descartar um banco de dados na verdade não faz referência ao nome do banco de dados para descartar - ele simplesmente elimina o banco de dados ao qual o cliente está conectado no momento. Limpar o histórico de comandos impedirá que você repita acidentalmente o dropDatabase
comando e descarte acidentalmente um segundo banco de dados.
Achei isso fácil de lembrar:
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 }
Você não precisa de heredocs ou eval ; mongo
ele pode atuar como intérprete.
#!/usr/bin/env mongo
var db = new Mongo().getDB("someDatabase");
db.dropDatabase();
Torne o arquivo executável e execute-o.
.js
, caso contrário, será interpretado como o endereço db.
mongo filename
que é desnecessário - o arquivo já possui um intérprete na linha superior. Basta fazer o arquivo executável e executá-lo./filename
./filename
realmente funcionará /usr/bin/env mongo filename
, certo? E, se filename
não terminar .py
, o mongo não reconhecerá o argumento como um script a ser executado.
ps
.
ps
apenas mostra o que está sendo executado no momento em que você invoca ps
, não a cadeia de exec
chamadas que leva a esse ponto nem o trabalho que o kernel realizou para carregar e executar o arquivo. Se você quiser saber o que realmente está acontecendo, use um wrapper /usr/bin/env
, defina-o como executável na linha shebang e, em seguida, inicie tudo strace
.
Você também pode usar um "heredoc":
mongo localhost/db <<EOF
db.dropDatabase()
EOF
Resultados em saída como:
mongo localhost/db <<EOF
db.dropDatabase()
EOF
MongoDB shell version: 2.2.2
connecting to: localhost/db
{ "dropped" : "db", "ok" : 1 }
bye
Eu gosto de usar heredocs para coisas assim, caso você queira uma sequência de comandos mais complexa.
Aqui estão algumas operações de exclusão completa do mongodb usando o mongo shell
Para excluir um documento específico nas coleções:db.mycollection.remove( {name:"stack"} )
Para excluir todos os documentos nas coleções: db.mycollection.remove()
Para excluir a coleção : db.mycollection.drop()
para excluir o banco de dados : primeiro vá para esse banco de dados por use mydb
comando e, em seguida,
db.dropDatabase()
diretamente do prompt de comando ou do flash: mongo mydb --eval "db.dropDatabase()
Outro jeito:
echo "db.dropDatabase()" | mongo <database name>
Execute em um 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 outra janela do terminal e execute os seguintes comandos,
mongodb
use mydb
db.dropDatabase()
A saída dessa operação deve ser semelhante à seguinte
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 }
>
Observe que mydb
ainda está em uso, portanto, a inserção de qualquer entrada nesse momento inicializará o banco de dados novamente.
Embora existam vários métodos, a melhor maneira (mais eficiente e mais fácil) é usar db.dropDatabase()
No prompt de comando, primeiro conecte-se ao mongodb usando o seguinte comando:
mongo -h [host-name]:[port:number] -d [dbname] -u [username] -p [password]
você estará acessando o db com <dbname>
.
Execute o seguinte comando para descartar o banco de dados inteiro:
db.dropDatabase()
um forro remoto remova todas as coleções do banco de dados mongo
note deve usar --host, (-h é ajuda para o comando mongo) e -d não é uma opção, selecione o db e o comando após a senha.
mongo --host <mongo_host>:<mongo_port> -u <db_user> -p <db_pass> <your_db> --eval "db.dropDatabase()"
Entre na sua linha de comando do mongoDB: E digite os comandos abaixo. use "YOUR_DATABASE_NAME"; db.dropDatabase ();
Solte um banco de dados 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 o seguinte comando do mongo shell para soltar db
usar ; db.dropDatabase ();
> use auth-users ; db.dropDatabase()
e > use auth-users; db.dropDatabase()
e ambos retornaram[thread1] Error: [auth-users ; db.dropD atabase()] is not a valid database name :