Isso foi muito útil no meu caso. De alguma forma, eu tinha um banco de dados chamado "mean-dev" em uma instalação mais antiga, e digitar "mean-dev.dropDatabase ()" no shell mongo resultou em "ReferenceError: mean não está definido". Mas usar a solução nesta resposta fez o truque. +1
KP MacGregor
22
Se você quiser obter um resultado legível, fazê-lo desta maneira: mongo <dbname> --eval "printjson(db.dropDatabase())"
Eu acho que ele quer dizer diretamente do prompt, não é? Nesse caso, você precisa gerar um arquivo .js com esses comandos e invocá-lo no prompt usando "mongo dropdb.js" ou algo assim, ou fazer o que você diz e remover os arquivos manualmente.
Remon van Vliet
2
mas esteja ciente que você não pode usar usecomandos no arquivo .js, você tem que se conectar ao concreto DB (especificar dbname para o comando mongo)
Betlista
46
Dica profissional: depois de soltar um banco de dados, você pode sair do mongo shell e excluir seu ~/.dbshellarquivo 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 dropDatabasecomando e descarte acidentalmente um segundo banco de dados.
Chris Allen Lane,
3
Essa é uma ideia inteligente, @chrisallenlane. O shell MongoDB é uma ferramenta bastante perigoso às vezes ... :)
mnemosyn
Aviso: Se você eliminar um banco de dados e criar um novo banco de dados com o mesmo nome, reinicie todas as instâncias do mongos ou use o comando flushRouterConfig em todas as instâncias do mongos antes de ler ou gravar nesse banco de dados. Esta ação assegura que as instâncias do mongos atualizem seu cache de metadados, incluindo o local do shard primário para o novo banco de dados. Caso contrário, os mongos podem perder dados nas leituras e gravar dados em um fragmento errado.
Lekr0
115
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 }
Observe que o nome do script deve terminar com .js, caso contrário, será interpretado como o endereço db.
Vegard
1
@ Legard Isso não está correto. Você está executando o mongo filenameque é desnecessário - o arquivo já possui um intérprete na linha superior. Basta fazer o arquivo executável e executá-lo./filename
mikemaccana
@mikemaccana Eu sei disso, mas fazer ./filenamerealmente funcionará /usr/bin/env mongo filename, certo? E, se filenamenão terminar .py, o mongo não reconhecerá o argumento como um script a ser executado.
Vegard
"Realizar ./filename realmente executa o nome do arquivo / usr / bin / env mongo, certo?" Não. Verifique a saída de ps.
mikemaccana
@mikemaccana A saída de psapenas mostra o que está sendo executado no momento em que você invoca ps, não a cadeia de execchamadas 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.
kbolino
31
Iniciar o MongoDB
O comando para queda do banco de dados é:
1. primeiro selecione o banco de dados que deseja excluir
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.
A mesma resposta que esta , que foi dada um mês antes.
Dan Dascalescu 9/09/16
10
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 mydbainda está em uso, portanto, a inserção de qualquer entrada nesse momento inicializará o banco de dados novamente.
-h é ajuda, -d não é uma opção mais parecida com `mongo --host [nome do host]: [porta: número] -u [nome do usuário] -p [senha] [nome do db] --eval" db.dropDatabase ( ) "`
jasenmichael 14/07/19
2
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.
como esse comando especifica qual banco de dados deve ser descartado? Com um banco de dados chamado "auth-usuários" Eu tentei > 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 :
Respostas:
Como isso:
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
fonte
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:
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.
fonte
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 odropDatabase
comando e descarte acidentalmente um segundo banco de dados.Achei isso fácil de lembrar:
fonte
Você não precisa de heredocs ou eval ;
mongo
ele pode atuar como intérprete.Torne o arquivo executável e execute-o.
fonte
.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, sefilename
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ê invocaps
, não a cadeia deexec
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 tudostrace
.Iniciar o MongoDB
O comando para queda do banco de dados é:
1. primeiro selecione o banco de dados que deseja excluir
2. Então use isso ..
fonte
Você também pode usar um "heredoc":
Resultados em saída como:
Eu gosto de usar heredocs para coisas assim, caso você queira uma sequência de comandos mais complexa.
fonte
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,diretamente do prompt de comando ou do flash:
mongo mydb --eval "db.dropDatabase()
fonte
Outro jeito:
fonte
Execute em um terminal:
fonte
Abra outra janela do terminal e execute os seguintes comandos,
A saída dessa operação deve ser semelhante à seguinte
Observe que
mydb
ainda está em uso, portanto, a inserção de qualquer entrada nesse momento inicializará o banco de dados novamente.fonte
Usando Javascript, você pode criar facilmente um drop_bad.js script para descartar seu banco de dados:
crie drop_bad.js :
Em seguida, execute 1 comando no terminal para executar o script usando o mongo shell:
fonte
Embora existam vários métodos, a melhor maneira (mais eficiente e mais fácil) é usar
db.dropDatabase()
fonte
No prompt de comando, primeiro conecte-se ao mongodb usando o seguinte comando:
você estará acessando o db com
<dbname>
.Execute o seguinte comando para descartar o banco de dados inteiro:
fonte
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.
fonte
Entre na sua linha de comando do mongoDB: E digite os comandos abaixo. use "YOUR_DATABASE_NAME"; db.dropDatabase ();
fonte
Solte um banco de dados MongoDB usando python:
fonte
O banco de dados mostrará o tipo de nome do banco de dados atual: db.dropDatabase ();
1- selecione o banco de dados a ser descartado usando a palavra-chave ' use '.
2- e digite db.dropDatabase ();
fonte
use o seguinte comando do mongo shell para soltar db
fonte
> 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 :