MongoDB Aggregation - Blog 4Linux
23 de março de 2017 Alisson Machado 2353 Views
Descubra como processar documentos distintos agrupados em uma única saída para facilitar a geração de resultados e performance quando preciso efetuar buscas em banco de dados MongoDB
A seguir explicarei vários parâmetros de como utilizar esse recurso e elaborar buscas mais específicas no MongoDB.
alisson@alisson-pc:~/MoodlePlus$ mongo
No log acima entrei no console do MongoDB e acessei o banco exemplo, nesse banco vou criar uma collection chamada funcionários e inserir alguns registros:
Para listar todos os documentos digite a instrução abaixo:
Agora que a base dados já está populada é possível utilizar do aggregate para filtrar essas buscas.
Por exemplo, se eu quiser buscar todos os funcionários que trabalhando na empresa 4linux:
> db.funcionarios.aggregate([{"$match":{"empresa":"4Linux"}}])
Caso queira agrupar os valores, é possível utilizando a instrução $group, essa instrução obrigatoriamente precisa que seja passado um _id e esse ai deve ser um campo do documento retornado.
> db.funcionarios.aggregate([{"$match":{"empresa":"4Linux"}},{"$group":{"_id":"$nome"}}])
> db.funcionarios.aggregate([{"$match":{"empresa":"4Linux"}},{"$group":{"_id":"$empresa","total":{"$sum":1}}}])
> db.funcionarios.aggregate([{"$match":{"empresa":"4Linux"}},{"$count":"total"}])
É possível também projetar uma saída, ou seja, modelar o documento e mostrar apenas campos específicos aumentando a performance da sua busca e trazendo resultados mais fáceis de se encontrar.
> db.funcionarios.aggregate([{"$match":{"empresa":"4Linux"}},{"$project":{"nome":1,"cargo":1}}])
O exemplo acima, pode-se ver que foi foram mostrados somente os campos _id, nome e cargo, sendo assim quando se quer mostrar um campo, coloca-se o valor 1 em conjunto com a chave, caso não queira pode se colocar o valor 0.
> db.funcionarios.aggregate([{"$match":{"empresa":"4Linux"}},{"$project":{"nome":1,"cargo":1,"_id":0}}])
No exemplo acima foi ocultado o campo _id para melhorar a visualização do documento.
Pode-se fazer um $match, depois um $project para limitar os campos e depois um $group para agrupar pelos cargo e saber quantas pessoas daquela posição existem na empresa.
> db.funcionarios.aggregate([{"$match":{"empresa":"4Linux"}},{"$project":{"nome":1,"cargo":1,"_id":0}},{"$group":{"_id":"$cargo","total":{"$sum":1}}}])
Esses são os comandos básicos para fazer um Aggregate no MongoDB. Espero que ajude em seus projetos.
Anterior Linux professional institute cria o exame linux essentials.
Próxima Zend: a ferramenta certa para o trabalho certo!
Afinal, você sabe o que é um API Gateway?
Com o aumento considerável do uso dos conhecidos cloud providers, alguns tópicos que eram restritos ao vocabulário dos profissionais de infraestrutura acabaram transbordando para outras áreas, em especial para os