// Tutorial //

Como importar e exportar um banco de dados MongoDB no Ubuntu 20.04

Published on April 7, 2021
Default avatar
By Toli
Developer and author at DigitalOcean.
Português
Como importar e exportar um banco de dados MongoDB no Ubuntu 20.04

O autor selecionou a COVID-19 Relief Fund​​​​​ para receber uma doação como parte do programa Write for DOnations.

Introdução

O MongoDB é um dos mecanismos de banco de dados NoSQL mais populares. Ele é famoso por ser escalável, poderoso, confiável e fácil de usar. Neste artigo, vamos mostrar como importar e exportar seus bancos de dados MongoDB.

Devemos deixar claro que ao dizer importação e exportação, estamos nos referindo àquelas operações que lidam com dados em um formato legível para humanos e compatível com outros produtos de software. Em contrapartida, as operações de backup e restauração criam ou usam dados binários específicos do MongoDB, que preservam a consistência e integridade dos seus dados, além de seus atributos específicos do MongoDB. Assim, para a migração, geralmente é preferível usar o backup e restauração, desde que os sistemas de origem e de destino sejam compatíveis.

As tarefas de backup, reinicialização e migração estão além do escopo deste artigo. Para obter mais informações, consulte Como fazer backup, restaurar e migrar um banco de dados MongoDB no Ubuntu 20.04.

Pré-requisitos

Para concluir este tutorial, você precisará do seguinte:

Passo 1 — Importando informações para o MongoDB

Para aprender como funciona a importação de informações para o MongoDB, vamos usar como exemplo um banco de dados MongoDB popular sobre restaurantes. Ele está no formato .json e pode ser baixado usando o wget desta forma:

  1. wget https://raw.githubusercontent.com/mongodb/docs-assets/primer-dataset/primer-dataset.json

Assim que o download terminar, você terá um arquivo chamado primer-dataset.json (com tamanho de 12 MB) no diretório atual. Vamos importar os dados desse arquivo para um novo banco de dados chamado newdb e para uma coleção chamada restaurants.

Use o comando mongoimport desta forma:

  1. sudo mongoimport --db newdb --collection restaurants --file primer-dataset.json

O resultado ficará parecido com este:

Output
2020-11-11T19:37:55.607+0000 connected to: mongodb://localhost/ 2020-11-11T19:37:57.841+0000 25359 document(s) imported successfully. 0 document(s) failed to import

Como o comando acima mostra, 25359 documentos foram importados. Como não tínhamos um banco de dados chamado newdb, o MongoDB o criou automaticamente.

Vamos verificar a importação.

Conecte-se ao banco de dados newdb recém-criado:

  1. sudo mongo newdb

Agora, você está conectado à instância de banco de dados newdb. Note que seu prompt mudou, indicando que você está conectado ao banco de dados.

Conte os documentos na coleção de restaurantes com o comando:

  1. db.restaurants.count()

O resultado mostrará 25359, que é o número de documentos importados. Para uma verificação ainda melhor, selecione o primeiro documento da coleção de restaurantes desta forma:

  1. db.restaurants.findOne()

O resultado ficará parecido com este:

[secondary label Output]
{
	"_id" : ObjectId("5fac3d937f12c471b3f26733"),
	"address" : {
		"building" : "1007",
		"coord" : [
			-73.856077,
			40.848447
		],
		"street" : "Morris Park Ave",
		"zipcode" : "10462"
	},
	"borough" : "Bronx",
	"cuisine" : "Bakery",
	"grades" : [
		{
			"date" : ISODate("2014-03-03T00:00:00Z"),
			"grade" : "A",
			"score" : 2
		},
...
	],
	"name" : "Morris Park Bake Shop",
	"restaurant_id" : "30075445"
}

Uma verificação detalhada como essa poderia revelar problemas com os documentos, como seu conteúdo, codificação, etc. O formato json usa a codificação UTF-8 e suas exportações e importações devem estar naquela codificação. Tenha isso em mente se for editar manualmente algum arquivo json. Caso contrário, o MongoDB manuseará ele automaticamente para você.

Para sair do prompt do MongoDB, digite exit no prompt:

  1. exit

Você será enviado de volta ao prompt de linha de comando normal como seu usuário não raiz.

Passo 2 — Exportando informações do MongoDB

Como mencionado anteriormente, ao exportar informações do MongoDB, é possível adquirir um arquivo de texto legível para humanos com seus dados. Por padrão, as informações são exportadas no formato json, mas também é possível exportar para csv (valores separados por vírgula).

Para exportar informações do MongoDB, use o comando mongoexport. Ele permite fazer uma exportação bastante refinada, sendo possível especificar um banco de dados, uma coleção, um campo e até mesmo usar uma consulta para a exportação.

Um exemplo de mongoexport simples seria exportar a coleção de restaurantes do banco de dados newdb que importamos anteriormente. Isso pode ser feito desta forma:

  1. sudo mongoexport --db newdb -c restaurants --out newdbexport.json

No comando acima, usamos o --db para especificar o banco de dados, -c para a coleção e --out para o arquivo no qual os dados serão salvos.

O resultado de um mongoexport executado com sucesso deve ser parecido com este:

Output
2020-11-11T19:39:57.595+0000 connected to: mongodb://localhost/ 2020-11-11T19:39:58.619+0000 [###############.........] newdb.restaurants 16000/25359 (63.1%) 2020-11-11T19:39:58.871+0000 [########################] newdb.restaurants 25359/25359 (100.0%) 2020-11-11T19:39:58.871+0000 exported 25359 records

O resultado acima mostra que 25359 documentos foram importados — o mesmo número dos importados.

Em alguns casos, pode ser necessário exportar apenas uma parte da sua coleção. Considerando a estrutura e o conteúdo do arquivo json de restaurantes, vamos exportar todos os restaurantes que satisfaçam os critérios de estar localizado no bairro do Bronx e ser de cozinha chinesa. Se quisermos obter essas informações diretamente enquanto conectados ao MongoDB, conecte-se novamente ao banco de dados:

  1. sudo mongo newdb

Então, use esta consulta:

  1. db.restaurants.find( { "borough": "Bronx", "cuisine": "Chinese" } )

Os resultados são exibidos no terminal:

  1. Output
    2020-12-03T01:35:25.366+0000 connected to: mongodb://localhost/
  2. 2020-12-03T01:35:25.410+0000 exported 323 records

Para sair do prompt do MongoDB, digite exit:

  1. exit

Se quiser exportar os dados de uma linha de comando sudo sem estar conectado ao banco de dados, incorpore a consulta anterior no comando mongoexport especificando-a no argumento -q desta forma:

  1. sudo mongoexport --db newdb -c restaurants -q "{\"borough\": \"Bronx\", \"cuisine\": \"Chinese\"}" --out Bronx_Chinese_retaurants.json

Note que estamos adicionando o caractere de escape de barra invertida (\) nas aspas duplas da consulta. De maneira similar, é necessário adicionar o caractere de escape a qualquer outro caractere especial na consulta.

Se a exportação tiver sido bem-sucedida, o resultado se parecerá com este:

Output
2020-11-11T19:49:21.727+0000 connected to: mongodb://localhost/ 2020-11-11T19:49:21.765+0000 exported 323 records

O exemplo acima mostra que 323 registros foram exportados, e é possível encontrá-los no arquivo Bronx_Chinese_retaurants.json que especificamos.

Use o cat e less para analisar os dados:

  1. cat Bronx_Chinese_retaurants.json | less

Use o SPACE para paginar os dados:

  1. Output
    date":{"$date":"2015-01-14T00:00:00Z"},"grade":"Z","score":36}],"na{"_id":{"$oid":"5fc8402d141f5e54f9054f8d"},"address":{"building":"1236","coord":[-73.8893654,40.81376179999999],"street":"238 Spofford Ave","zipcode":"10474"},"borough":"Bronx","cuisine":"Chinese","grades":[{"date":{"$date":"2013-12-30T00:00:00Z"},"grade":"A","score":8},{"date":{"$date":"2013-01-08T00:00:00Z"},"grade":"A","score":10},{"date":{"$date":"2012-06-12T00:00:00Z"},"grade":"B","score":15}],
  2. . . .

Pressione q para sair. Agora, é possível importar e exportar um banco de dados MongoDB.

Conclusão

Este artigo introduziu as informações essenciais sobre a importação e exportação de e para um banco de dados MongoDB. Continue a leitura com Como fazer backup, restaurar e migrar um banco de dados MongoDB no Ubuntu 20.04.

Considere também o uso da replicação. A replicação permite continuar executando seu serviço MongoDB ininterruptamente a partir de um servidor MongoDB subordinado enquanto estiver restaurando o mestre depois de uma falha. Parte da replicação é o registro de operações (oplog), que registra todas as operações que modificam seus dados. É possível usar esse registro, assim como usaria o registro binário no MySQL, para restaurar seus dados depois que o último backup tiver sido realizado. Lembre-se que os backups geralmente são realizados durante a noite, e se quiser restaurar um backup durante a tarde, você estará perdendo todas as atualizações desde o último backup.


Want to learn more? Join the DigitalOcean Community!

Join our DigitalOcean community of over a million developers for free! Get help and share knowledge in our Questions & Answers section, find tutorials and tools that will help you grow as a developer and scale your project or business, and subscribe to topics of interest.

Sign up
About the authors
Default avatar
Toli

author

Developer and author at DigitalOcean.

Default avatar
Developer and author at DigitalOcean.

Still looking for an answer?

Was this helpful?
Leave a comment

This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!