Pular para o conteúdo principal

Criando e Executando Funções no MongoDB

Olá pessoal, hoje iremos ver como realizar a criação e execução de funções dentro de uma base no banco de dados MongoDB.


Conhecendo o MongoDB

Nos dias atuais o tema NoSQL vem sendo muito discutido, muitas empresas vem adotando este paradigma de armazenamento, mas como toda tecnologia existem prós e contras, para entender bem o tema recomento a leitura do livro NoSQL Essencial (NoSQL Destilled) dos autores Promod J. Sadalage e Martin Fowler, o livro mostra características de aplicações, modelos de NoSQL, entre outras detalhes importantes sobre adoção de qualquer banco desse segmento.

O MongoDB é um banco de dados NoSQL baseado no modelo de documentos, onde cada registro é armazenado em forma de um documento BSON, uma característica muito legal do MongoDB é justamente trabalhar neste formato, porque o formato JSON é amplamente utilizado pela maioria dos desenvolvedores, sendo assim o entendimento da estrutura de armazenamento se torna simples.

Criando Funções no MongoDB

O MongoDB permite a criação de funções JavaScript dentro do banco, com isso podemos criar funções e executa-las manipulando nossas coleções e seus dados.

Um ponto muito importante que devemos ressaltar, seguindo boas práticas de desenvolvimento, devemos evitar de adicionar lógicas de negócio dentro dessas funções, o uso de funções deve ser efeito com a finalidade de manipular informações, evitando criar as famosas "Procedures" do mundo SQL.

No próprio site oficial do MongoDB, existe uma nota informando para usar as funções com cautela e evitar de acrescentar lógicas de negócio dentro do banco, pois existem limitações na execução de código JavaScript sobre o MondoDB.

https://docs.mongodb.com/manual/tutorial/store-javascript-function-on-server/index.html
(09/04/2018 ás 19:00)


Calculando o Tamanho de um Documento BSON

Para termos um exemplo do uso de funções no MongoDB, vamos criar uma função que retorna o tamanho de um documento de uma determinada coleção, para realizar a criação de funções, podemos utilizar a linha de comando logado na devida base de dados, ou utilizar alguma ferramenta como o Robomongo (Robo 3T), a função irá ficar como abaixo:


1
2
3
4
5
6
7
8
function(collectionName, _id) {
    
    var data = db.getCollection(collectionName).findOne({_id:_id});
    
    var result = Object.bsonsize(data);
    
    return result;
}

Perceba que é puro código JavaScript, na linha 1, temos a declaração da função, onde receberemos como argumento o collectionName (nome da coleção) e o _id (chave da coleção), na linha 3, executamos a busca do documento utilizando como critério o _id, na linha 5, utilizamos a função Object.bsonsize(), que retorna o tamanho em bytes do documento.

Para criar a função no Robomongo, basta seguir como abaixo:

Criando uma função utilizando a ferramenta Robomongo.

Existem outras maneiras de criar funções no MongoDB, para mais detalhes veja a documentação oficial: https://docs.mongodb.com/manual/tutorial/store-javascript-function-on-server/index.html


Executando uma Função

Agora vamos executar a função da seguinte maneira:

1
2
3
db.loadServerScripts();

documentSize("collection_teste", "123456");

Na linha 1, carregamos os scripts para que possam ser executados, na linha 3, executamos a função chamada documentSize(<<nome_coleção>>, <<valor_da_chave>>)

Executando no Robomongo temos o seguinte resultado:

Execução da função no Robomongo.

Na imagem acima foi executada a função retornando o devido resultado, as funções no MongoDB podem ajudar em atividades comuns na manipulação dos dados.

Até a próxima.

Referências

Comentários

Postar um comentário

Postagens mais visitadas deste blog

Utilizando LocalDate, LocalDateTime e LocalTime na Prática

Tudo bem pessoal, hoje iremos avaliar e analisar operações de manipulação de Datas envolvendo a JavaTime API introduzida no Java 8.

Exemplos da java.time API
Já se passaram alguns anos desde o lançamento do Java 8 e mesmo após este período, há empresas que desconhecem o poder da java.time API, esta foi uma nova API de datas introduzida no Java 8 visando resolver problemas que tínhamos com as velhas classes Date e Calendar.

Vamos mostrar vários exemplos práticos do uso da API:
Criação de objetos No exemplo abaixo, estamos criando os objetos para manipulação de datas, perceba que temos 3 tipos, sendo LocalDate para manipular datas, LocalDateTime para manipular data/hora e LocalTime para horas:
LocalDate localDate = LocalDate.now(); LocalDateTime localDateTime = LocalDateTime.now(); LocalTime localTime = LocalTime.now();
Utilizando formatação Aqui realizamos a operação de formatação, perceba que não foi necessário utilizar a classe SimpleDateFormat, que usaríamos em conjunto com D…

Lendo e Manipulando arquivos CSV com Java

Olá hoje veremos como realizar a leitura e manipulação de arquivos CSV com Java, mostrando que as novas versões da plataforma Java deixaram algumas tarefas simples de serem realizadas.

Exemplo de Arquivo Hoje em dia é comum ao realizar integrações ou carga de dados o uso de arquivos CSV, isto porque, este arquivo possui uma estrutura de fácil entendimento e simples de manipular na maioria das plataformas de desenvolvimento.

Para realizar a leitura dos dados vamos manipular um arquivo com as seguintes colunas: namecpfagephone address:

name;cpf;age;phone;address caio;123456789;20;1145223643;AvenidaPaulista vinicius;147852369;18;1125253625;AvenidaManoel sandra;963258741;30;1174587858;RuaTeixeira regina;125478522;40;1145254536;RuaFernando fernando;785245563;42;1145253669;RuaPereira augusto;456123014;50;1125363633;AvenidaPaulinia maria;456123789;10;1125455525;AvenidaNossaSenhora
Para representar os dados em objetos Java iremos utilizar a seguinte classe:

importlombok.AllArgsConstruc…

Versionamento de Banco Dados com Flyway

Olá pessoal, hoje iremos analisar e aprender como realizar o versionamento e gerenciamento das bases de dados relacionais utilizando o framework Flyway.

Versionamento de Banco Dados Ao trabalhar com desenvolvimento de sistemas é comum realizarmos o versionamento, isso porque uma aplicação pode necessitar de correções, novas funcionalidades e evoluções, onde para garantir a compatibilidade e cuidar do seu ciclo de vida, geramos versões onde é especificado quais itens estão presentes em cada release.
Vamos imaginar seguinte cenário: Sistema ERP1.0.0: Entrega dos módulos Financeiro e RH;1.1.0: Entrega do módulo Contas a Receber. Perceba que a ideia é controlar o que cada versão possui de diferente, e para controlar essas mudanças no lado da aplicação existem várias técnicas e ferramentas, mas e para controlar as mudanças no lado do Banco de dados ? 
Para isso podemos utilizar ferramentas de versionamento que ajudam a realizar este controle, a ferramenta que iremos utilizar é o Flyway.
Con…