Tutorial

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

Published on April 7, 2021
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.

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Learn more about our products

About the author(s)

Category:
Tutorial

Still looking for an answer?

Ask a questionSearch for more help

Was this helpful?
 
Leave a comment
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!

Join the Tech Talk
Success! Thank you! Please check your email for further details.

Please complete your information!

Become a contributor for community

Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

DigitalOcean Documentation

Full documentation for every DigitalOcean product.

Resources for startups and SMBs

The Wave has everything you need to know about building a business, from raising funding to marketing your product.

Get our newsletter

Stay up to date by signing up for DigitalOcean’s Infrastructure as a Newsletter.

New accounts only. By submitting your email you agree to our Privacy Policy

The developer cloud

Scale up as you grow — whether you're running one virtual machine or ten thousand.

Get started for free

Sign up and get $200 in credit for your first 60 days with DigitalOcean.*

*This promotional offer applies to new accounts only.