Domine o MongoDB: 11 Consultas Essenciais para Desenvolvedores

O MongoDB destaca-se como um dos bancos de dados NoSQL mais procurados e valorizados no âmbito do desenvolvimento profissional. A sua adaptabilidade, capacidade de expansão e habilidade em gerir grandes volumes de informação tornam-no uma opção primária para aplicações modernas. Se o seu objetivo é dominar as consultas e operações habituais do MongoDB, este é o ponto de partida ideal.

Mantenha-se atualizado com o conteúdo mais recente.

Continue a ler para explorar o conteúdo.

Quer procure obter e manipular dados de forma eficaz, implementar modelos de dados robustos ou criar aplicações de resposta rápida, adquirir uma compreensão abrangente das consultas e operações comuns do MongoDB irá, sem dúvida, aperfeiçoar as suas competências.

1. Criação ou Mudança de Bases de Dados

Estabelecer uma base de dados local através do MongoDB Shell é um processo simples, sobretudo se já tiver configurado um cluster remoto. É possível criar uma nova base de dados no MongoDB usando o comando `use`:

 use nome_da_bd 

Embora este comando seja utilizado para criar uma nova base de dados, também pode ser usado para mudar para uma base de dados existente sem a necessidade de criar uma nova de raiz.

2. Eliminar uma Base de Dados

Inicialmente, direcione para a base de dados que deseja remover através do comando `use`. Em seguida, use o comando `dropDatabase()` para eliminar a base de dados:

 use nome_da_bd
db.dropDatabase()

3. Criar uma Coleção

Para iniciar a criação de uma coleção, mude para a base de dados desejada. Utilize a função `createCollection()` para gerar uma nova coleção no MongoDB:

 db.createCollection("nome_da_colecao")

Substitua `nome_da_colecao` pelo nome que pretende dar à sua coleção.

4. Inserir Documentos numa Coleção

Ao enviar dados para uma coleção, pode adicionar um único documento ou um conjunto de documentos.

Para incluir um único documento:

 db.nome_da_colecao.insertOne({"Nome":"João", "Gostos":"Xadrez"})

É também possível empregar o método anterior para inserir um conjunto de documentos com um ID:

 db.nome_da_colecao.insertOne([{"Nome":"João", "Gostos":"Xadrez"}, {"Linguagem": "Mongo", "is_admin": true}])

Para inserir diversos documentos simultaneamente, cada um com IDs únicos, utilize a função `insertMany`:

 db.nome_da_colecao.insertMany([{"Nome":"João", "Gostos":"Xadrez"}, {"Nome": "Maria", "Gostos": "Wordle"}])

5. Obter Todos os Documentos de uma Coleção

Pode consultar todos os documentos de uma coleção empregando a função `find()`:

 db.nome_da_colecao.find()

O comando acima irá retornar todos os documentos contidos na coleção especificada.

Também é possível limitar o número de dados retornados. Por exemplo, o seguinte comando irá retornar apenas os dois primeiros documentos:

 db.nome_da_colecao.find().limit(2)

6. Filtrar Documentos numa Coleção

Existem múltiplas formas de filtrar documentos no MongoDB. Considere os seguintes dados como exemplo:

Se pretende consultar apenas um campo específico num documento, utilize a função `find`:

 db.nome_da_colecao.find({"Gostos":"Wordle"}, {"_id":0, "Nome":1})

O comando acima retorna todos os documentos onde o campo `Gostos` tem o valor `Wordle`. Apenas os nomes são mostrados, enquanto o ID do documento é ignorado.

Pode também filtrar uma coleção por um fator numérico. Digamos que pretende obter os nomes de todos os utilizadores com mais de 21 anos, utilize o operador `$gt`:

 db.nome_da_colecao.find({"Gostos":"Xadrez", "Idade":{"$gt":21}}, {"_id":0, "Nome":1})

O resultado será algo como:

Experimente substituir `find` por `findOne` para verificar o que acontece. No entanto, existem várias outras funções de filtragem:

  • $lt: Todos os valores inferiores ao especificado.
  • $gte: Valores iguais ou superiores ao especificado.
  • $lte: Valores inferiores ou iguais ao definido.
  • $eq: Obtém todos os valores iguais ao especificado.
  • $ne: Todos os valores que não são iguais ao especificado.
  • $in: Utilize esta função quando consultar com base num array. Ela obtém todos os valores que correspondam a qualquer um dos itens no array. A função `$nin` faz o oposto.

7. Ordenar Consultas

A ordenação ajuda a organizar a consulta numa sequência específica. Pode classificar em ordem ascendente ou descendente. A ordenação requer uma referência numérica.

Por exemplo, para classificar em ordem crescente:

 db.nome_da_colecao.find({"Gostos":"Xadrez"}).sort({"Idade":1})

Para ordenar a consulta acima em ordem decrescente, substitua “1” por “-1”.

 db.nome_da_colecao.find({"Gostos":"Xadrez"}).sort({"Idade":-1})

8. Atualizar um Documento

As atualizações no MongoDB necessitam de operadores atómicos para especificar o modo como a atualização deve ser efetuada. Segue-se uma lista de operadores atómicos frequentemente utilizados em conjunto com uma consulta de atualização:

  • $set: Adiciona um novo campo ou modifica um campo existente.
  • $push: Insere um novo elemento num array. Utilize com o operador `$each` para inserir múltiplos itens de uma só vez.
  • $pull: Remove um item de um array. Use com `$in` para remover vários itens simultaneamente.
  • $unset: Remove um campo de um documento.

Para atualizar um documento e adicionar um novo campo, por exemplo:

 db.nome_da_colecao.updateOne({"Nome":"Sandra"}, {"$set":{"Nome":"Joana", "email":"[email protected]"}})

O comando acima atualiza o documento especificado, conforme demonstrado:

A remoção do campo de e-mail é simples através do operador `$unset`:

 db.nome_da_colecao.updateOne({"Nome":"Sandra"}, {"$unset":{"email":"[email protected]"}})

Considere os seguintes dados de exemplo:

É possível inserir um item no campo de array de itens existentes através do operador `$push`:

 db.nome_da_colecao.updateOne({"Nome":"Pedro"}, {"$push":{"items":"Banana"}})

Eis o resultado:

Utilize o operador `$each` para inserir múltiplos itens de uma só vez:

 db.nome_da_colecao.updateOne({"Nome":"Pedro"}, {"$push":{"items": {"$each":["Amêndoa", "Melão"]}}})

Eis o resultado:

Conforme já mencionado, o operador `$pull` remove um item de um array:

 db.nome_da_colecao.updateOne({"Nome":"Pedro"}, {"$pull":{"items":"Banana"}})

Os dados atualizados são os seguintes:

Inclua a função `$in` para remover múltiplos itens de um array simultaneamente:

 db.nome_da_colecao.updateOne({"Nome":"Pedro"}, {"$pull":{"items": {"$in":["Amêndoa", "Melão"]} }}) 

9. Eliminar um Documento ou um Campo

A função `deleteOne` ou `deleteMany` remove um documento de uma coleção. Use `deleteOne` para remover um documento com base num campo especificado:

 db.nome_da_colecao.deleteOne({"Nome":"JoãoSilva"})

Se pretender eliminar diversos documentos com chaves em comum, use `deleteMany`. A consulta abaixo remove todos os documentos que tenham `Xadrez` como seu `Gostos`.

 db.nome_da_colecao.deleteMany({"Gostos":"Xadrez"})

10. Operação de Indexação

A indexação aperfeiçoa o desempenho das consultas ao simplificar o número de documentos que o MongoDB precisa analisar. Geralmente, o ideal é criar um índice nos campos que são consultados com maior frequência.

A indexação no MongoDB é semelhante ao uso de índices para otimizar consultas SQL. Por exemplo, para criar um índice ascendente no campo `Nome`:

 db.nome_da_colecao.createIndex({"Nome":1})

Para listar os seus índices:

 db.nome_da_colecao.getIndexes()

O que foi apresentado acima é apenas uma introdução. Existem diversas outras formas de criar um índice no MongoDB.

11. Agregação

O pipeline de agregação, uma versão aprimorada do MapReduce, permite executar e armazenar cálculos complexos no MongoDB. Ao contrário do MapReduce, que exige a criação do mapa e das funções de redução em funções JavaScript separadas, a agregação é simples e utiliza apenas métodos integrados do MongoDB.

Considere os seguintes dados de vendas, por exemplo:

Ao utilizar a agregação do MongoDB, pode calcular e armazenar o número total de produtos vendidos para cada categoria da seguinte forma:

 db.vendas.aggregate([{$group:{"_id":"$Secção", "totalVendido":{$sum:"$Vendido"}}}, {$project:{"_id":0, "totalVendido":1, "Secção":"$_id"}}])

A consulta acima irá retornar o seguinte:

Dominar Consultas MongoDB

O MongoDB disponibiliza diversos métodos de consulta, incluindo funcionalidades para melhorar o desempenho das mesmas. Independentemente da sua linguagem de programação, as estruturas de consulta apresentadas acima são fundamentais para interagir com uma base de dados MongoDB.

Pode haver algumas diferenças nas sintaxes básicas. Por exemplo, enquanto algumas linguagens de programação, como Python, reconhecem casos de cobra, outras, incluindo JavaScript, usam o caso de camelo. Certifique-se de que pesquisa o que melhor se adequa à tecnologia que utiliza.