Referência: ROSSI, Diego. NoSQL uma opção real aos bancos relacionais. SQL Magazine, ed. 95, ano 12, p. 9 - 12.
O mongoDB é compatível com os sistemas operacionais: OS X, Linux, Windows e Solaris para as versões 32 e 64 bits. Para a demonstração desse artigo explicarei a instalação e a utilização em ambiente Windows.
Antes de instalar o mongoDB devemos fazer o download do mesmo em http://www.mongodb.org/downloads.
Após realizar o passo anterior, extraia o pacote .zip que foi baixado dentro de uma pasta no C:\mongodb. Agora devemos criar outra pasta dentro do diretório C:\, com o nome de data. Abra a pasta data, dentro da mesma crie outra pasta chamada db.
E finalmente nosso banco de dados estará pronto para ser executado. Basta abrir o prompt de comando (Iniciar - Executar - Digite: cmd), feito isso vá até a pasta onde está localizado o nosso MongoBD, através do comando: cd C:\mongodb\bin após a realização do comando acima execute o servidor do MongoDB, com o comando: mongod.
Após digitar o comando mongod deixe o prompt aberto, ele garante que o servidor está executando.
Para conferir se o servidor mongo está realmente ativo, acesse o endereço: http://localhost:27017. Se o seu navegador exibir uma página como a exibida na Figura 4, o servidor está funcionando corretamente.
Caso não seja exibida uma página idêntica a essa em seu navegador, verifique os passos anteriores.
Após o funcionamento correto do servidor é hora de chamar o cliente para trabalhar, pois é onde iremos interagir com a base de dados.
Figura 4. Página exibida caso o mongo esteja rodando.
Para dar início ao trabalho da aplicação do cliente iremos fazer o processo semelhante ao de dar início no servidor.
Feito isto deixe o pronpt de comando aberto, abra outro prompt de comando (Iniciar - Executar - Digite: cmd), digite: mongo
Temos que abrir outro prompt de comando (Iniciar - Executar - Digite: cmd). Após realizar esses passos iremos novamente até o local onde se encontra a pasta do MongoDB com a aplicação do cliente, para isso digite o seguinte comando: Cd C:\mongodb\bin
Agora é hora de dar início na aplicação do cliente, para isso utilize o comando abaixo: mongo
Ao confirmar a entrada desse comando deve aparecer uma tela semelhante à da Figura 5, pois será nela que iremos trabalhar.
Perceba que o cliente é iniciado com o uso da base de dados test, que é a base padrão do MongoDB.
Feito isto deixe o pronpt de comando aberto, abra outro prompt de comando (Iniciar - Executar - Digite: cmd), digite: mongo
Temos que abrir outro prompt de comando (Iniciar - Executar - Digite: cmd). Após realizar esses passos iremos novamente até o local onde se encontra a pasta do MongoDB com a aplicação do cliente, para isso digite o seguinte comando: Cd C:\mongodb\bin
Agora é hora de dar início na aplicação do cliente, para isso utilize o comando abaixo: mongo
Ao confirmar a entrada desse comando deve aparecer uma tela semelhante à da Figura 5, pois será nela que iremos trabalhar.
Perceba que o cliente é iniciado com o uso da base de dados test, que é a base padrão do MongoDB.
Figura 5. Aplicação Cliente, para a manipulação de dados.
Utilizando o MongoDB
O MongoDB é uma ferramenta de banco de dados que não segue a tradicional linguagem SQL, por isso conheceremos um pouco mais sobre os comandos utilizados nele: use
O comando USE é utilizado para se conectar a uma base de dados ou então para criar uma base de dados caso ela não exista. O MongoDB não necessita de uma criação prévia da base, bastando apenas passar a usá-la e inserir dados que a mesma terá a sua criação automaticamente. Iremos utilizar a base de dados sqlmagazine mesmo ela ainda não existindo. Veja na Figura 6.
show dbs
No comando citado acima serão exibidas todas as bases de dados que possuímos no nosso gerenciador de banco de dados conforme o exemplo apresentado na Figura 7.
Figura 6. criando a base de dados sqlmagazine.
Figura 7. Exibindo as bases de dados cadastrados.
Perceba que a base de dados test e a sqlmagazine não tiveram a sua criação confirmada ainda, pois a base só é criada realmente após a inserção de dados em uma Collection (Tabela).
db.createCollection("")
O comando db.createCollection("") é utilizado para criar uma collection(Tabela) no banco de dados. A collection pode ser criada também de maneira implícita, ou seja, na hora que forem inseridos os dados em uma tabela, caso ela não exista esta será criada automaticamente.
Para exemplificar, ao utilizarmos o comando abaixo a tela da Figura 8 será apresentada.
db.createCollection(“usuario”)
O interessante nesse tipo de banco de dados é que a estrutura da tabela não necessita ser definida no momento em que a mesma é criada. No momento da inserção dos dados é que iremos definir os campos que essa tabela irá possuir.
show collections
Este comando permite listar as respectivas tabelas do banco que foram criadas para aquela base de dados. Nesse comando são exibidas todas as tabelas, tanto as que foram criadas implicitamente como as que foram criadas explicitamente (ver Figura 9).
Figura 8. Resultado obtido através da execução do comando createCollection.
Figura 9. exibindo as tabelas do nosso banco de dados.
show dbs
Ao executar este comando novamente veremos que o banco de dados foi criado.
Figura 10: exibindo criação do banco após inserir uma collection.
db..insert({:, :})
O comando citado acima é utilizado para inserir um registro no banco de dados, onde o banco que está em uso é referenciado pela variável db e logo após temos o nome da tabela que receberá o dado, o insert informará ao banco de dados que a operação realizada será de inserção. O parâmetro do comando será passado dentro de chaves ({}). O conjunto de dados a ser passado para a collection deve possuir o nome do campo e o valor.
Veja o exemplo citado abaixo e o seu resultado na Figura 10.
db.usuario.insert({nome:”Diego Rossi”, idade:23})
Na Figura 10 obtivemos sucesso na inserção de dados, pois nenhum alerta nos foi reportado, caso contrário seria emitido uma mensagem de advertência refletindo o erro.
db..find()
Esse comando é utilizado para listar os registros da tabela. O find tem a mesma função do comando SELECT no SQL tradicional que estamos tão familiarizados. No comando abaixo temos um comando semelhante ao “SELECT * FROM usuário;”. O resultado de sua aplicação está apresentado na Figura 11.
db.usuario.find()
db..find({:}).sort({:<1|-1>})
Figura 10. Resultado da inserção do registro na collection
Figura 11. Resultado obtido através da pesquisa realizada no banco de dados.
O comando find é utilizado para fazer uma consulta no banco, e como no SQL em alguns casos precisamos filtrar e ordenar os resultados a serem exibidos, para isso utilizaremos alguns parâmetros no comando find como mostrado acima.
O find aceita parâmetros e quando ele recebe algum valor, esse terá a mesma função do WHERE no SQL tradicional. Sendo assim, no comando abaixo o “{idade:33}” seria o mesmo que “WHERE idade=33”.
O papel da função sort é semelhante a do ORDER BY da linguagem padrão SQL, então o “sort({nome:1})” seria o mesmo que “ORDER BY nome ASC”.
O sort deve receber como parâmetro o nome do campo e 1 para ordenar em ordem crescente ou -1 para ordem decrescente. O resultado da consulta apresentada abaixo pode ser observado na Figura 12.
db.usuario.find({idade:23}).sort({nome:1})
db..distinct(“”)
Já no comando apresentado acima temos uma pesquisa no banco de dados com a utilização da função distinct. O SQL para essa consulta seria o seguinte “SELECT DISTINCT(nome) FROM usuário;”, no padrão nosql ficaria idêntico ao código exibido logo abaixo e cujo resultado da execução é apresentado na Figura 13.
db.usuario.distinct(“nome”)
Figura 12. Exibindo a pesquisa em ordem crescente e somente os usuários que possuem a idade igual a 23.
Figura 13. Mostrando apenas um exemplar de cada nome dos usuários, ou seja, se um nome repetir este será exibido somente uma vez.
db..count()
Para contar os registros que estão inseridos no nosso banco de dados utilizaremos o comando citado acima. No SQL padrão teríamos que utilizar a função count deixando o comando da seguinte maneira “SELECT COUNT(*) FROM usuario”. Para produzir o mesmo resultado através do MongoDB criamos o código que está sendo exibido logo abaixo e cujo resultado é apresentado na Figura 14.
db.usuario.count()
db..count()
Para contar os registros que estão inseridos no nosso banco de dados utilizaremos o comando citado acima. No SQL padrão teríamos que utilizar a função count deixando o comando da seguinte maneira “SELECT COUNT(*) FROM usuario”. Para produzir o mesmo resultado através do MongoDB criamos o código que está sendo exibido logo abaixo e cujo resultado é apresentado na Figura 14.
db.usuario.count()
Figura 14. Resultado da contagem de quantos registros estão armazenados na collection de usuário.
db..update({}, {$set:{}}, , )
No comando update temos dois parâmetros que recebem o valor true ou false. O primeiro deles é o upsert, se ele estiver definido como true, no caso de uma alteração se o registro ainda não existir ele será inserido naquela collection.
O segundo é o multi. Caso ele seja definido como true, todos os registros que corresponderem ao critério de seleção serão alterados, caso contrário só o primeiro será alterado. O código para o SQL semelhante ao citado seria assim: “UPDATE usuario SET idade=22 WHERE nome=´Diego Rossi;´”. No caso do noSql o código é apresentado logo abaixo e o resultado de sua execução pode ser visto nas Figuras 15 e 16.
db.usuario.update({nome:”Diego Rossi”}, {$set:{idade:22}}, false, true)
db.usuario.update({nome:”Diego Rossi”}, {$set:{idade:22}}, true, false)
Figura 15. Alteração foi realizada com sucesso.
Figura 16. Exibindo os dados da collection depois do comando update.
db..remove({})
Por fim, este comando tem a função de apagar um usuário do banco. No padrão SQL para se ter tal efeito deveríamos utilizar o DELETE da seguinte maneira “DELETE FROM usuário WHERE nome=´Diego Rossi´;”. O mesmo resultado pode ser obtido no NoSQL através do comando (ver Figuras 17 e 18).
db.usuario.remove({nome:”Diego Rossi”})
db..remove({})
Por fim, este comando tem a função de apagar um usuário do banco. No padrão SQL para se ter tal efeito deveríamos utilizar o DELETE da seguinte maneira “DELETE FROM usuário WHERE nome=´Diego Rossi´;”. O mesmo resultado pode ser obtido no NoSQL através do comando (ver Figuras 17 e 18).
db.usuario.remove({nome:”Diego Rossi”})
Figura 17. Execução do código remove.
Figura 18. Resultado obtido pela consulta executada após o comando remove.















