Observe os conjuntos de dados do MongoDB a seguir. Coleções: Autor: { "_id": 1, "nome": "João", "email": "joao@ www.mpu.mp.br" } Endereco: { "_id": 101, "usuario_id": 1, "quadra": "202", "cidade": "Brasília", "cep": "70000-000" } Resultado da junção: { "_id": 1, "nome": "João", "email": " joao@ www.mpu.mp.br ", "detalhes_endereco": [ { "_id": 101, "usuario_id": 1, "quadra": "202", "cidade": " Brasília", "cep": "70000-000" } ] } No MongoDB, para realizar operações de junção entre as coleções combinando os dados de Autor e seu respectivo Endereco, deve-se utilizar a operação:
- A)$skip
$skip apenas pula uma quantidade de documentos no resultado, sem realizar junção entre colecoes.
- B)$sort
$sort serve para ordenar os documentos por um ou mais campos, nao para combinar dados de colecoes diferentes.
- C)$match
$match filtra documentos que atendem a uma condicao, mas nao faz relacionamento entre colecoes.
- D)$group
$group agrega documentos por chave e calcula acumuladores, porem nao executa join entre colecoes.
- E)$lookup
$lookup e a operacao usada para fazer juncao entre colecoes no MongoDB, trazendo documentos relacionados em um resultado combinado.
Gabarito: E
No MongoDB, quando voce quer juntar dados que estao em colecoes diferentes, a operacao clássica do Aggregation Framework e o $lookup. Ele funciona como uma especie de “join” do mundo relacional, trazendo documentos relacionados de outra colecao com base em campos correspondentes. No exemplo, o documento de Autor tem um usuario com _id 1, e a colecao Endereco guarda usuario_id 1, entao o MongoDB consegue combinar os registros e montar o resultado com os dados do endereco dentro de um array, como mostrado no enunciado. Isso cai muito em prova porque a banca gosta de testar a diferenca entre operadores do pipeline. $match filtra documentos, $sort ordena, $group agrega, mas nenhum deles faz junção entre colecoes. Quem faz essa ponte entre colecoes e o $lookup, inclusive sendo o operador tipico para esse tipo de relacionamento no MongoDB. Na pratica, o raciocinio e simples: se voce precisa “buscar a ficha completa” de um documento em outra colecao, pense em $lookup. E se a questao mostrar algo com campos como localField e foreignField, pode apostar que esta falando desse mecanismo de junção. Aqui, portanto, o gabarito E esta correto porque a operacao pedida e justamente a de combinar Autor com seu respectivo Endereco.