Um guia para o MongoDB com Java
1. Visão geral
Neste artigo, daremos uma olhada na integração deMongoDB, um banco de dados de código aberto NoSQL muito popular com um cliente Java autônomo.
O MongoDB é escrito em C ++ e possui vários recursos sólidos, como redução de mapa, compartilhamento automático, replicação, alta disponibilidade etc.
2. MongoDB
Vamos começar com alguns pontos-chave sobre o próprio MongoDB:
-
armazena dados em documentos do tipoJSON que podem ter várias estruturas
-
usa esquemas dinâmicos, o que significa que podemos criar registros sem predefinir nada
-
a estrutura de um registro pode ser alterada simplesmente adicionando novos campos ou excluindo os existentes
O modelo de dados mencionado acima nos permite representar relacionamentos hierárquicos, armazenar matrizes e outras estruturas mais complexas facilmente.
3. Terminologias
A compreensão dos conceitos no MongoDB se tornará mais fácil se pudermos compará-los às estruturas de bancos de dados relacionais.
Vamos ver as analogias entre o Mongo e um sistema MySQL tradicional:
-
Table no MySQL se torna umCollection no Mongo
-
Row torna-se umDocument
-
Column torna-se umField
-
Joins são definidos como documentoslinkingeembedded
Essa é uma maneira simplista de analisar os principais conceitos do MongoDB, é claro, mas ainda assim útil.
Agora, vamos mergulhar na implementação para entender esse poderoso banco de dados.
4. Dependências do Maven
Precisamos começar definindo a dependência de um driver Java para MongoDB:
org.mongodb
mongo-java-driver
3.4.1
Para verificar se alguma nova versão da biblioteca foi lançada -track the releases here.
5. UsandoMongoDB
Agora, vamos começar a implementar consultas Mongo com Java. Seguiremos com as operações básicas de CRUD, pois são as melhores para começar.
5.1. Faça uma conexão comMongoClient
Primeiro, vamos fazer uma conexão com um servidor MongoDB. Com a versão> = 2.10.0, usaremos oMongoClient:
MongoClient mongoClient = new MongoClient("localhost", 27017);
E para versões mais antigas, use a classeMongo:
Mongo mongo = new Mongo("localhost", 27017);
5.2. Conectando a um banco de dados
Agora, vamos nos conectar ao nosso banco de dados. É interessante notar que não precisamos criar um. Quando Mongo vê que o banco de dados não existe, ele o cria para nós:
DB database = mongoClient.getDB("myMongoDb");
Às vezes, por padrão, o MongoDB é executado no modo autenticado. Nesse caso, precisamos nos autenticar enquanto nos conectamos a um banco de dados.
Podemos fazê-lo conforme apresentado abaixo:
MongoClient mongoClient = new MongoClient();
DB database = mongoClient.getDB("myMongoDb");
boolean auth = database.authenticate("username", "pwd".toCharArray());
5.3. Mostrar bancos de dados existentes
Vamos exibir todos os bancos de dados existentes. Quando queremos usar a linha de comando, a sintaxe para mostrar os bancos de dados é semelhante ao MySQL:
show databases;
Em Java, exibimos bancos de dados usando o trecho abaixo:
mongoClient.getDatabaseNames().forEach(System.out::println);
A saída será:
local 0.000GB
myMongoDb 0.000GB
Acima,local é o banco de dados Mongo padrão.
5.4. Crie umCollection
Vamos começar criando umCollection (tabela equivalente para MongoDB) para nosso banco de dados. Assim que tivermos conectado ao nosso banco de dados, podemos fazer umCollection como:
database.createCollection("customers", null);
Agora, vamos exibir todas as coleções existentes para o banco de dados atual:
database.getCollectionNames().forEach(System.out::println);
A saída será:
customers
5.5. Salvar - Inserir
A operaçãosave tem semântica salvar ou atualizar: se umid estiver presente, ele executaupdate, se não - ele fazinsert.
Quando somossave um novo cliente:
DBCollection collection = database.getCollection("customers");
BasicDBObject document = new BasicDBObject();
document.put("name", "Shubham");
document.put("company", "example");
collection.insert(document);
A entidade será inserida em um banco de dados:
{
"_id" : ObjectId("33a52bb7830b8c9b233b4fe6"),
"name" : "Shubham",
"company" : "example"
}
A seguir, veremos a mesma operação -save - com semânticaupdate.
5.6. Salvar - Atualizar
Vejamos agorasave com semânticaupdate, operando em um cliente existente:
{
"_id" : ObjectId("33a52bb7830b8c9b233b4fe6"),
"name" : "Shubham",
"company" : "example"
}
Agora, quandosave o cliente existente - vamos atualizá-lo:
BasicDBObject query = new BasicDBObject();
query.put("name", "Shubham");
BasicDBObject newDocument = new BasicDBObject();
newDocument.put("name", "John");
BasicDBObject updateObject = new BasicDBObject();
updateObject.put("$set", newDocument);
collection.update(query, updateObject);
O banco de dados ficará assim:
{
"_id" : ObjectId("33a52bb7830b8c9b233b4fe6"),
"name" : "John",
"company" : "example"
}
Como você pode ver, neste exemplo específico,save usa a semântica deupdate, porque usamos objeto com_id fornecido.
5.7. Leia umDocument de umCollection
Vamos pesquisar umDocument em umCollection fazendo uma consulta:
BasicDBObject searchQuery = new BasicDBObject();
searchQuery.put("name", "John");
DBCursor cursor = collection.find(searchQuery);
while (cursor.hasNext()) {
System.out.println(cursor.next());
}
Ele mostrará os únicosDocument que temos até agora em nossoCollection:
[
{
"_id" : ObjectId("33a52bb7830b8c9b233b4fe6"),
"name" : "John",
"company" : "example"
}
]
5.8. Delete aDocument
Vamos avançar para nossa última operação CRUD, exclusão:
BasicDBObject searchQuery = new BasicDBObject();
searchQuery.put("name", "John");
collection.remove(searchQuery);
Com o comando acima executado, nosso únicoDocument será removido deCollection.
6. Conclusão
Este artigo foi uma introdução rápida ao uso do MongoDB a partir de Java.
A implementação de todos esses exemplos e trechos de código pode ser encontradaover on GitHub - este é um projeto baseado em Maven, portanto, deve ser fácil de importar e executar como está.