Desejo exportar todas as coleções no MongoDB pelo comando:
mongoexport -d dbname -o Mongo.json
O resultado é:
Nenhuma coleção especificada!
O manual diz que, se você não especificar uma coleção, todas as coleções serão exportadas.
No entanto, por que isso não funciona?
http://docs.mongodb.org/manual/reference/mongoexport/#cmdoption-mongoexport--collection
Minha versão do MongoDB é 2.0.6.
Respostas:
Para pessoas preguiçosas, use
mongodump
, é mais rápido:E para "restaurá-lo / importá-lo" (em directory_backup / dump /):
Dessa forma, você não precisa lidar com todas as coleções individualmente. Basta especificar o banco de dados.
Observe que eu recomendaria não usar
mongodump
/mongorestore
para armazenamentos de big data . É muito lento e depois de passar 10 / 20GB de dados, pode demorar horas para restaurar.fonte
Eu escrevi o script bash para isso. Basta executá-lo com 2 parâmetros (nome do banco de dados, dir para armazenar arquivos).
fonte
for file in *.json; do c=${file#*exp_yourdbname_}; c=${c%.json}; mongoimport --db yourdbname --collection "${c}" --file "${file}"; done
Siga as etapas abaixo para criar um mongodump a partir do servidor e importá-lo para outro servidor / máquina local que tenha um nome de usuário e uma senha
fonte
Exportando todas as coleções usando mongodump, use o seguinte comando
mongodump -d database_name -o directory_to_store_dumps
Para restaurar, use este comando
fonte
mongodump -d mongo -o path\to\Desktop\blog
e recebo umSyntaxError: missing ; before statement
do CMD. :(Informe-nos onde você instalou o seu Mongo DB? (no Ubuntu ou no Windows)
Para Windows:
mongodump - nome do banco de dados db - caminho a ser salvo,
por exemplo: mongodump - db mydb -, saída c: \ TEMP \ op.json
Para o Ubuntu:
mongodump -d nome do banco de dados -o nome do arquivo a ser salvo,
por exemplo: mongodump -d mydb -o output.json
fonte
As respostas anteriores explicaram bem, estou adicionando minha resposta para ajudar caso você esteja lidando com um banco de dados remoto protegido por senha
fonte
Caso deseje conectar um servidor mongoDB remoto como mongolab.com, você deve passar credenciais de conexão, por exemplo.
fonte
Se você estiver bem com o formato bson, poderá usar o utilitário mongodump com o mesmo sinalizador -d. Ele irá despejar todas as coleções no diretório de despejo (o padrão, pode ser alterado através da opção -o) no formato bson. Você pode importar esses arquivos usando o utilitário mongorestore.
fonte
Você pode usar
mongo --eval 'printjson(db.getCollectionNames())'
para obter a lista de coleções e, em seguida, fazer uma exportação mongo em todas elas. Aqui está um exemplo em rubyfonte
out.scan(/\".+?\"/).map { |s| s.gsub('"', '') }
Eu precisava da versão de script em lote do Windows. Esse tópico foi útil, então pensei em contribuir com minha resposta também.
Eu tive alguns problemas usando
set /p COLLECTIONS=<__collections.txt
, daí ofor /f
método complicado .fonte
Depois de tentar muitos exemplos complicados, descobri que uma abordagem muito simples funcionou para mim.
Eu só queria pegar um db de um db do local e importá-lo em uma instância remota:
na máquina local:
então scp'd meu despejo na minha máquina servidor:
então, a partir do diretório pai do despejo, simplesmente:
e que importou o banco de dados.
assumindo que o serviço mongodb esteja sendo executado, é claro.
fonte
Se desejar, você pode exportar todas as coleções para csv sem especificar
--fields
(exportará todos os campos).Em http://drzon.net/export-mongodb-collections-to-csv-without-specifying-fields/, execute este script bash
fonte
Você pode fazer isso usando o comando mongodump
Os arquivos exportados serão criados na pasta destination_path \ your_db_name (neste exemplo, C: \ Users \ HP \ Desktop \ test)
Referências: o7planning
fonte
Se você deseja despejar todas as coleções em todos os bancos de dados (que é uma interpretação abrangente da intenção do questionador original), use
Todos os bancos de dados e coleções serão criados em um diretório chamado 'dump' no local 'atual'
fonte
Sei que essa é uma pergunta bastante antiga e que o mongodump / mongorestore é claramente o caminho certo se você deseja um resultado 100% fiel, incluindo índices.
No entanto, eu precisava de uma solução rápida e suja que provavelmente seria compatível com versões anteriores e anteriores entre as versões antiga e nova do MongoDB, desde que não haja nada de especialmente estranho. E por isso eu queria a resposta para a pergunta original.
Existem outras soluções aceitáveis acima, mas esse pipeline Unix é relativamente curto e agradável:
Isso produz um
.json
arquivo com nome apropriado para cada coleção.Observe que o nome do banco de dados ("mydatabase") aparece duas vezes. Estou assumindo que o banco de dados é local e você não precisa passar credenciais, mas é fácil fazer isso com ambos
mongo
emongoexport
.Observe que estou usando o
grep -v
descartesystem.indexes
, porque não quero que uma versão mais antiga do MongoDB tente interpretar uma coleção de sistemas de uma mais nova. Em vez disso, estou permitindo que meu aplicativo faça suasensureIndex
chamadas habituais para recriar os índices.fonte
você pode criar um arquivo zip usando o seguinte comando. Ele criará um arquivo zip do banco de dados {dbname} fornecido. Você pode importar posteriormente o seguinte arquivo zip no seu mongo DB.
fonte
Aqui está o que funcionou para mim ao restaurar um banco de dados exportado:
mongorestore -d 0 ./0 --drop
onde ./ continha os arquivos bson exportados. Observe que
--drop
ele substituirá os dados existentes.fonte
se você deseja usar mongoexport e mongoimport para exportar / importar cada coleção do banco de dados, acho que esse utilitário pode ser útil para você. Eu usei utilidades semelhantes algumas vezes;
fonte
Se você deseja fazer backup de todos os dbs no servidor, sem ter a preocupação de que os dbs sejam chamados, use o seguinte script de shell:
Isso usa o utilitário mongodump, que fará backup de todos os bancos de dados se nenhum for especificado.
Você pode colocar isso no seu cronjob, e ele será executado apenas se o processo mongod estiver em execução. Ele também criará o diretório de backup, se não houver nenhum.
Cada backup do banco de dados é gravado em um diretório individual, para que você possa restaurar bancos de dados individuais do dump global.
fonte
Primeiro, inicie o Mongo DB - para isso, vá para o caminho como ->
C: \ Arquivos de programas \ MongoDB \ Server \ 3.2 \ bin e clique no arquivo mongod.exe para iniciar o servidor MongoDB.
Comando no Windows para Exportar
C:> mongodump --host remote_ip_address: 27017 --db -o C: / Usuários / Desktop / pasta-temp
Comando no Windows para Importar
C:> mongorestore --host = ip --port = 27017 -d C: / Usuários / Desktop / pasta temporária / db-dir
fonte
fonte
Exportar:
mongo/bin> mongoexport -d webmitta -c domain -o domain-k.json
Importar:
mongoimport -d dbname -c newCollecionname --file domain-k.json
Onde
fonte
Existem várias opções, dependendo do que você deseja fazer
1) Se você deseja exportar seu banco de dados para outro banco de dados mongo, use
mongodump
. Isso cria uma pasta de arquivos BSON que possuem metadados que o JSON não teria.2) Se você deseja exportar seu banco de dados para JSON, pode usar,
mongoexport
exceto que você deve fazer uma coleção por vez (isso é por design). No entanto, acho mais fácil exportar todo o banco de dadosmongodump
e depois converter para JSON.fonte
Para despejo, seu DB coloca o CMD abaixo
fonte
Para exportar no formato JSON, faça isso seguindo os comandos que você pode ver.
fonte