Tutorial de Uso com o Java Criado por Fernando Anselmo Versão 1.0 em 18/08/2012
Seção 1 Nesta seção veremos: Histórico do MongoDB Como instalar o MongoDB Console de Comandos Usar o Java MongoDB (de "humongous (monstruoso)") é um Sistema de Banco de dados NoSQL, Orientado a Objetos, de fonte aberto. MongoDB é parte da família de sistemas de Banco de Dados NoSQL, ou seja, em vez de armazenar dados em tabelas como é feito em um banco de dados "tradicional" relacional, MongoDB guarda os dados estruturados como JSON, isto é, como documentos com esquemas dinâmicos (MongoDB chama este formato de JSON Binário ou simplesmente BSON), isto promove uma integração com certos tipos de dados mais fácil e rápida. Resumidamente, o MongoDB possui as seguintes características: Escrito em linguagem de programação C++ Gerencia coleções de documentos BSON formato de intercâmbio de dados usado principalmente como um formato de armazenamento de dados e transferência de rede no banco de dados MongoDB. BSON é uma forma binária para a representação de estruturas de dados simples e matrizes associativas (chamados de objetos ou documentos no MongoDB) 1.1. Levantar o Servidor Como primeiros passos precisamos baixar e levantar o servidor, para isso: 1. Baixar o arquivo ZIP do site http://www.mongodb.org/downloads para seu sistema operacional, para fins deste exemplo estaremos utilizando o Windows. 2. Descompactar o arquivo, por exemplo: C:\mongo 3. Criar um pasta para seus dados, por exemplo: C:\mongoDB 4. Na pasta C:\mongo\bin executar o seguinte comando: mongod --dbpath "C:\mongoDB" 5. Para testar o servidor abra o navegador na página: http://localhost:28017 1.2. Console de Comandos Na pasta de instalação do Mongo, execute o aplicativo mongo.exe, e digite o seguinte comando para mostrar as bases de dados existentes: > show dbs Para criar (ou mudar) a bases de dados corrente para outra, use o comando: > use [nome_base] Para mostrar as coleções (tabelas) existentes na base de dados corrente, use o comando: > show collections Tutorial do MongoDB com Java 2
Para inserir (ou alterar se o objeto for chamado anteriormente) um documento em uma coleção (se a coleção não existe ela é criada) na base de dados corrente (db é uma variável interna apontada para a base de dados corrente), use o comando: > db.[colecao].save({[campo1]: [valor1], [campon]: [valorn]) Para listar os documentos (registros) de uma coleção existente na base de dados corrente, use o comando: > db.[colecao].find() Para eliminar documento(s) de uma coleção existente na base de dados corrente, use o comando: > db.[colecao].remove({[campo]: [valor]) Para apagar uma coleção existente na base de dados corrente, use o comando: > db.[colecao].drop() Para apagar uma base de dados corrente, use o comando: > db.dropdatabase() Para ver mais comandos da console de comandos acesse o seguinte endereço: 1.3. Baixar o Driver Java http://www.mongodb.org/display/docs/dbshell+reference Para procedermos a conexão com Java, inicialmente é necessário baixar o driver JDBC que está disponível no endereço: https://github.com/mongodb/mongo-java-driver/downloads Este é um driver como qualquer outro padrão JDBC, ou seja, um simples arquivo compactado no formato JAR. Então, basta agregá-lo a seu projeto. 1.4. Seu primeiro programa Abra seu editor de Java e crie um projeto, adicione o arquivo JAR contendo o driver para este e crie o seguinte programa: import java.net.unknownhostexception; import com.mongodb.basicdbobject; import com.mongodb.db; import com.mongodb.dbcollection; import com.mongodb.dbcursor; import com.mongodb.dbobject; import com.mongodb.mongo; import com.mongodb.mongoexception; public class Teste01 { private DBCollection col; public static void main(string[] args) { new Teste01().executar(); public boolean conectar() throws UnknownHostException, MongoException { Mongo mongo = new Mongo("localhost", 27017); DB db = mongo.getdb("escola"); col = db.getcollection("aluno"); return true; Tutorial do MongoDB com Java 3
public void executar() { try { conectar(); // Inserir os alunos BasicDBObject document1 = new BasicDBObject(); document1.put("aluno", "João da Silva"); document1.put("nota", (int)(math.random()*10)); col.insert(document1); BasicDBObject document2 = new BasicDBObject(); document2.put("aluno", "Aline Moraes"); document2.put("nota", (int)(math.random()*10)); col.insert(document2); BasicDBObject document3 = new BasicDBObject(); document3.put("aluno", "Soraya Gomes"); document3.put("nota", (int)(math.random()*10)); col.insert(document3); // Listar os Alunos DBCursor cursor = col.find(); DBObject doc; while (cursor.hasnext()) { doc = cursor.next(); System.out.println(doc.get("aluno") + ": " + doc.get("nota")); cursor.close(); System.out.println("Done"); catch (UnknownHostException e) { e.printstacktrace(); catch (MongoException e) { e.printstacktrace(); Tutorial do MongoDB com Java 4
Seção 2 Neste seção veremos: Verificar existências no MongoDB Localizar dados no MongoDB Ordenações Em linguagem NoSQL precisamos aprender via Java como realizar as pesquisas, todos os comandos deste exemplo foram escritos baseados nos objetos existentes no código visto na Parte 1. 2.1. Verificar as base existentes Para verificar quais bases de dados existem, use o comando: for (String s: mongo.getdatabasenames()) System.out.println(s); 2.2. Verificar as coleções existentes Para verificar quais coleções (tabelas) existem, use o comando: Set<String> colls = db.getcollectionnames(); for (String s: colls) System.out.println(s); 2.3. Localizar um documento Para trazer o primeiro documento (registro), use o comando: DBObject mydoc = collection.findone(); System.out.println(myDoc); 2.4. Total de documentos Para obter a quantidade de documentos, use o comando: System.out.println(collection.getCount()); 2.5. Todos documentos Para obter todos os documentos, use o comando: DBCursor cursor = collection.find(); try { while(cursor.hasnext()) System.out.println(cursor.next()); finally { cursor.close(); 2.6. Documentos determinados Para trazer o aluno que possui a NOTA = 10, use o comando: searchquery.put("nota", 10); Para trazer o aluno que possui a NOTA > 7, use o comando: Tutorial do MongoDB com Java 5
searchquery.put("nota", new BasicDBObject("$gt", 7)); No comando acima podemos utilizar também: new BasicDBObject("$lt", 7) : ID < 7 new BasicDBObject("$ne", 7) : ID!= 7 new BasicDBObject("$gte", 7) : ID >= 7 new BasicDBObject("$lte", 7) : ID <= 7 Para trazer o aluno que possui a NOTA maior que 7 e menor ou igual a 10, use o comando: query.put("nota", new BasicDBObject("$gt", 7).append("$lte", 10)); 2.7. Realizar ordenações Para criar um índice (ascendente), use o comando: collection.createindex(new BasicDBObject("nota", 1)); // para descendente use -1 Para listar os índices existentes, use o comando: List<DBObject> list = collection.getindexinfo(); for (DBObject o: list) System.out.println(o); Tutorial do MongoDB com Java 6
Seção 3 Neste seção veremos: Eliminações no MongoDB Manutenções no MongoDB Em linguagem NoSQL precisamos aprender como realizar manutenções via Java nos objetos existentes no MongoDB, todos os comandos deste exemplo foram escritos baseados nos objetos existentes no código visto na Parte 1 3.1. Eliminar as bases existentes Para eliminar uma base de dados, use o comando: mongo.dropdatabase("nomebase"); 3.2. Eliminar as coleções existentes Para eliminar uma coleção, use o comando: collection.drop(); 3.3. Manutenção nos documentos Para inserir um documento na coleção, use o comando: BasicDBObject document = new BasicDBObject(); document.put("hosting", "hosta"); document.put("tipo", "vps"); document.put("clientes", 900); collection.insert(document); Para alterar um documento da coleção, use o comando: BasicDBObject newdocument = new BasicDBObject(); document.put("hosting", "hosta"); newdocument.put("tipo", "shared host"); newdocument.put("clientes", 111); collection.update(new BasicDBObject().append("hosting", "hosta"), newdocument); Ou altere um documento com o comando: // Adiciona 99 ao campo clients BasicDBObject newdocument = new BasicDBObject().append("$inc", new BasicDBObject().append("clientes", 99)); collection.update(new BasicDBObject().append("hosting", "hosta"), newdocument); Ou altere um documento com o comando: // Localiza o hosting = hosta e altera o type de "vps" para "dedicated server" BasicDBObject newdocument = new BasicDBObject().append("$set", new BasicDBObject().append("tipo", "dedicated server")); collection.update(new BasicDBObject().append("hosting", "hosta"), newdocument); Para eliminar um documento da coleção, use o comando: BasicDBObject document = new BasicDBObject(); document.put("hosting", "hosta"); collection.remove(document); Tutorial do MongoDB com Java 7