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

Popular Posts

Criando arquivos de log com Log4J

Monitorando o Tomcat com Java VisualVM

Gerenciamento de Transações com EJB - Parte 2

Injeção de dependências em Java EE usando @Inject, @EJB e @Resource ?

AngularJS - Formatando Datas com o Filter Date

JBoss AS 7 - Instalação e Configuração

Métodos Utilitários da Classe String

Configurando o arquivo application.properties do SpringBoot

Criando Módulos e DataSources no Wildfly

Criando um Projeto com SpringBoot