All for Joomla All for Webmasters
Banco de Dados Python

Python com MongoDB (NoSQL) – Getting Started

Bancos de dados não-relacionais (NoSQL) são amplamente utilizados para trabalhar grandes volumes de dados (Big Data), dado sua robustez e escabilidade. Dentre as opções disponíveis, o MongoDB tem sido uma das opções mais utilizadas pelos programadores, devido à sua facilidade de manuseio e integração. Você pode começar a utilizar o MongoDB com sua linguagem de programação de preferência usando o driver de adaptação para consultas ao banco. Neste post, iremos abordar o PyMongo, adaptador dedicado à linguagem Python, percorrendo os seguintes tópicos:

  • Instalação do PyMongo
  • Conectando ao MongoDB
  • Explorando as Collections e Documents do MongoDB
  • Executando comandos básicos de criação, recuperação, atualização e deleção (CRUD) com o PyMongo

Para começar a utilizar o adptador PyMongo, naturalmente é necessário que se tenha instalado o interpretador Python e o SGDB Mongo (veja como instalar aqui).

Instalando o Pymongo

Apesar de haverem outras opções disponibilizadas pela comunidade, o PyMongo é  o driver oficial para utilização do MongoDB com Python. Você pode checar a documentação completa do PyMongo aqui. A forma mais fácil de instalar o PyMongo é através do gerenciador de pacotes pip:

Uma vez que o PyMongo está instalado, nós podemos escrever nosso primeiro trecho de código para retornar algumas informações do servidor MongoDB. No console ou no seu script, execute o trecho abaixo:.

Um exemplo de saída seria como a seguir:

Se a sua execução se deu sem problemas até aqui, está tudo pronto para seguir adiante.

Explorando coleções e documentos

O MongoDB armazena seus dados em documentos. Esse termo documento não é o mesmo referente a um arquivo do Word ou Adobe PDF, mas se refere a documentos JSON, baseados na sua  especificação. Um exemplo de documento JSON seria como abaixo:

JSON document example

Exemplo de documento JSON
 

Perceba que os documentos não são apenas pares chave/valor, mas eles podem incluir arrays ou subdocumentos. Os dados em si podem ser de diferentes tipos, como geoespacial, floats, datas, etc. Internamente o MongoDB armazena uma representação binária do JSON, denominada BSON. Uma coleção no MongoDB é um conjunto de documentos. Um database, por sua vez, é um conjunto de coleções. A estrutura é similar aos bancos de dados relacionais e pode ser análoga como demonstra a tabela abaixo:

Relacional MongoDB
Database Database
Tabelas Coleções
Linhas Documentos
Índice Índice

Existem muitas vantagens em armazenar dados em documentos. Uma discussão mais profunda sobre esse aspecto está fora do escopo deste post, mas algumas das vantagens são o dinamismo, estrutura flexível, e a possibilidade de armazenar arrays são alguns dos pontos que podemos listar de imediato.

Vamos dar uma olhada nas operações básicas de CRUD em documentos no MongoDB.

Executando operações básicas de CRUD com o PyMongo

Novamente, para estabelecer uma conexão com o MongoDB com o PyMongo, executamos:

Agora nós podemos criar um objeto database referenciando nossa nova base chamada “business”, como abaixo:

Quando criamos esse objeto, nós podemos executar as operações de CRUD. Para ter um exemplo de real utilidade, vamos começar gerando e populando dados de exemplo para uma aplicação:

Note que nós não temos que executar nenhum comando de antemão para usar a database como em banco de dados relacionais, onde executamos uma query como “CREATE DABASE…” antes. O comando que executa a inserção de fato é a função insert_one() . Um pouco auto-explicativo, o comando insere um documento no MongoDB. O resultado retorna o ObjectID que foi criado. Este é um dos métodos que possibilitam inserir dados no banco. Para inserir múltiplos objetos, podemos utilizar a função insert_many() .

A partir disso, nós podemos explorar fazendo consultas e manipulando os dados que temos no MongoDB. Vamos explorar a seguir outros trechos de código para manipular os reviews dos negócios que temos em nossa base.

Explorando os dados de review dos negócios

Agora que nós temos um bom set de dados em nossa base, vamos fazer algumas consultas usando o PyMongo. No MongoDB, o comando find_one() é utilizado para recuperar um único documento, de forma muito parecida com o SELECT utilizado em bases relacionais. Para usar o comando find_one() no PyMongo, nós passamos um dicionário que especifica os critérios da consulta. Por exemplo, vamos buscar um único negócio que tenha um review com pontuação 5 utilizando o dicionário  { rating : 5 } .

Dado que nós criamos 500 exemplos de registros, existem mais do que um negócio com a avaliação 5. O método find_one() é apenas um de uma série de possibilidades para recuperação de dados no MongoDB. Outra função, chamada find() , retorna um cursor que itera sobre todos os documentos que casam com o critério fornecido. Esse cursor suporta métodos como o count() , que retorna o número de registros para a query em questão. Por exemplo, para encontrar o número de registros com avaliação 5:

Os resultados podem variar, uma vez que os dados foram gerados aleatoriamente.

O MongoDB pode facilmente executar essas consultas de forma direta. Entretanto, considere o cenário onde você quer somar as ocorrências de cada avaliação possível (1 a 5) através de toda a base. No MongoDB você poderia criar 5 consultas separadas, execultaria e apresentaria os resultados ou você poderia utilizar uma única consulta com o auxílio das funções de agregação:

Atualizando dados com o PyMongo

Similar aos métodos de inserção, para atualização o MongoDB possui algumas funções para manipulação dos dados, tais como update_one() , update_many()  e replace_one(). De forma análoga, o método update_one()  atualizará um único documento baseado em uma query que casa com o documento. Por exemplo, vamos assumir que nossa avaliação de negócios tem agora a possibilidade dos usuários “curtirem” o negócio. Para ilustrar atualizando um documento com esse novo campo, vamos dar uma olhada no formato de um documento em sua forma atual na nossa aplicação. Depois, vamos atualizar o documento e ver a alteração:

Quando executamos o código acima, devemos ter uma saída semelhante à demonstrada abaixo:

Perceba que o documento não tinha o campo “likes” originalmente e uma query de update nos permite facilmente adicioná-lo ao documento. Em um banco de dados relacional, teríamos que executar um “ALTER TABLE” antes para permitir esse tipo de alteração.

Se você quer atualizar os campos do documento e manter o mesmo ObjectID, é sugerido utilizar a função replace_one() . As funções de atualização ainda suportam uma opção chamada upsert. Com o upsert você instrui ao MongoDB para que crie um novo documento no caso de não existir o documento que você está tentando atualizar.

Removendo Documentos

Do mesmo modo que os comandos anteriormente discutidos, temos as opções delete_one()  e delete_many() , que recebe uma query para casar o(s) documento(s) a ser(rem) deletado(s). Por exemplo, se você quer remover todos os documentos de avaliações onde a categoria é “Bar Food”, podemos utilizar o comando abaixo:

Próximos passos

Existem uma série de opções quando se trata de aprender mais sobre o uso de MongoDB com Python. A MongoDB University é um ótimo lugar para começar a aprender sobre administração, desenvolvimento e outros tópicos como análises no MongoDB. Para mais informações, você pode conferir através deste link. Quaisquer dúvidas ou sugestões, utilize a área de comentários ou entre em contato!

Você Também Pode Gostar

Nenhum Comentário

Deixe uma Resposta