Contents

11 consultas e operações do MongoDB que você deve conhecer

O MongoDB ganhou popularidade considerável entre os desenvolvedores devido a seus recursos excepcionais, como versatilidade, escalabilidade e gerenciamento eficiente de grandes quantidades de dados. Como uma opção ideal para aplicativos de software contemporâneos, o MongoDB oferece aos usuários uma oportunidade de aprimorar sua proficiência em relação a consultas padronizadas e procedimentos operacionais.

Ao possuir uma compreensão intrincada das consultas e procedimentos predominantes do MongoDB, pode-se efetivamente extrair e alterar informações ao construir estruturas de dados robustas e programas responsivos ao usuário, elevando assim seu nível de proficiência.

Criar ou alternar bancos de dados

A criação de um banco de dados local usando o shell do MongoDB é um processo descomplicado, especialmente quando se estabelece um cluster remoto. Para gerar um novo banco de dados no MongoDB, utilize o seguinte comando:

 use db_name 

Embora a execução do comando mencionado anteriormente estabeleça com sucesso um novo banco de dados, também é permitido utilizá-lo para fazer a transição para um banco de dados já existente sem realizar o processo de criação de novo.

Eliminar banco de dados

Para começar, utilize o comando use, assim como fizemos antes, para se conectar ao banco de dados desejado que precisa ser descartado. Em seguida, use a função dropDatabase() para remover completamente o banco de dados de seu sistema.

 use db_name
db.dropDatabase()

Criar uma coleção

Para estabelecer uma coleção no banco de dados pretendido, utilize o método createCollection() dentro do seu ambiente MongoDB:

 db.createCollection("collection_name")

Substitua collection_name pelo nome de coleção escolhido.

Inserir documento em uma coleção

Ao transmitir informações para um repositório, é possível transmitir um único registro ou uma variedade de registros como um todo.

Para inserir um único documento:

 db.collection_name.insertOne({"Name":"Idowu", "Likes":"Chess"})

Pode-se utilizar a abordagem mencionada acima para incorporar uma matriz de documentos contendo um único identificador exclusivo:

 db.collection_name.insertOne([{"Name":"Idowu", "Likes":"Chess"}, {"Language": "Mongo", "is_admin": true}])

Para adicionar vários documentos com identificadores exclusivos simultaneamente, utilize o método “insertMany”:

 db.collection_name.insertMany([{"Name":"Idowu", "Likes":"Chess"}, {"Name": "Paul", "Likes": "Wordle"}])

Obter todos os documentos de uma coleção

Para recuperar todos os documentos dentro de uma coleção especificada, o método find() pode ser empregado utilizando a palavra-chave do banco de dados relevante.

 db.collection_name.find()

O método acima mencionado recupera todos os documentos contidos na coleção designada.

/pt/images/query-result-sample-mongodb-find.jpg

Você também pode restringir as informações recuperadas a uma quantidade específica. Como exemplo, considere a seguinte instrução para obter apenas os dois registros iniciais:

 db.collection_name.find().limit(2)

Filtrar documentos em uma coleção

Considere um conjunto de dados como uma ilustração, onde existem vários métodos de filtragem dentro do reino do MongoDB.

/pt/images/sample-data-for-filtering.jpg

Utilize o método “localizar” ao recuperar informações de um único campo em um documento.

 db.collection_name.find({"Likes":"Wordle"}, {"_id":0, "Name":1})

A consulta acima mencionada recupera todos os documentos nos quais o termo “Curtir” aparece, desconsiderando o identificador específico do documento e focando apenas no nome do documento.

/pt/images/filter-example-one.jpg

Para recuperar uma lista de nomes de usuários com mais de 21 anos, pode-se utilizar o operador maior que denotado como “$gt”.

 db.collection_name.find({"Likes":"Chess", "Age":{"$gt":21}}, {"_id":0, "Name":1})

A saída se parece com isso:

/pt/images/filter-example-two.jpg

Ao substituir “find” por “findOne”, é prudente observar qualquer alteração na funcionalidade. Deve-se observar que existem várias palavras-chave de filtragem adicionais no sistema.

O símbolo “$lt” representa uma expressão lógica avaliada como verdadeira para todos os valores menores que um valor especificado, caso contrário, é falsa.

O símbolo “$gte” representa um operador lógico que é utilizado em consultas e expressões, que indica que um valor deve ser igual ou maior que um valor específico. Pode ser representado como “maior que ou igual a” em inglês simples.

O símbolo “$lte” representa uma expressão lógica que avalia se um determinado valor é menor ou igual a outro valor especificado, resultando em verdadeiro se a condição for atendida e falso caso contrário.

A função = recupera todos os elementos em um determinado conjunto que são iguais a um valor específico.

O conjunto de todos os elementos que não possuem o valor designado é denotado como “$ne”.

O operador “$in” pode ser utilizado ao consultar dados com base em uma matriz, recuperando todos os elementos que correspondem a qualquer item dentro da matriz especificada. Por outro lado, o operador “$not in ($)” (ou “$nin”) é usado para retornar resultados para elementos que não correspondem a nenhum valor dentro da matriz fornecida.

Consultas de classificação

A classificação é um processo de organização de dados em uma sequência predeterminada, seja em ordem crescente ou decrescente, com base em um critério específico. É importante observar que a triagem requer a utilização de uma medida quantificável para uma execução adequada.

Por exemplo, para classificar em ordem crescente:

 db.collection_name.find({"Likes":"Chess"}).sort({"Age":1})

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

 db.collection_name.find({"Likes":"Chess"}).sort({"Age":-1})

Atualizar um documento

O MongoDB utiliza operadores atômicos em conjunto com consultas de atualização para determinar o resultado desejado da modificação de dados. Abaixo, compilamos uma seleção de operadores atômicos frequentemente empregados para essa finalidade:

De fato, parece que há alguma inconsistência na terminologia entre as duas seções do texto que você forneceu. Na primeira seção, o termo “Conjunto” é usado para se referir a um agrupamento de campos em um formulário, enquanto na segunda seção, o termo “Conjunto de Campos” é usado para denotar especificamente um conjunto de campos com uma finalidade comum. Pode ser útil padronizar a linguagem usada em ambas as seções para maior clareza e consistência.

O comando $push é usado para adicionar um novo elemento a uma matriz e pode ser emparelhado com o operador $each para inserir vários elementos simultaneamente.

A função $pull é um comando que remove um elemento ou elementos de uma matriz com base em um valor de chave especificado. Ele pode ser usado em conjunto com o operador $in para remover com eficiência vários itens de uma só vez, especificando uma matriz de valores para o parâmetro values ​​.

O comando $unset no MongoDB é usado para remover um campo ou campos específicos de um documento existente. Esta operação pode ser executada em qualquer coleção e atualizará todos os documentos dessa coleção com o campo especificado removido. A sintaxe para usar o método unset envolve especificar o nome do campo que você deseja desmarcar, bem como as opções para modificar a consulta, se necessário.

Para revisar um documento existente e ao mesmo tempo incorporar um novo elemento, considere as seguintes etapas:1. Acesse o documento que deseja modificar e faça as alterações desejadas em seu conteúdo ou formato. Isso pode envolver a correção de erros, atualização de informações desatualizadas ou adição de novos detalhes.2. Determine quais alterações específicas são necessárias com base em suas metas e objetivos. Por exemplo, se você deseja incluir campos de dados adicionais no documento, decida que tipo de informação esses campos devem conter e como eles serão organizados dentro da estrutura geral do documento.3. Implemente as alterações fazendo as modificações apropriadas diretamente no próprio documento. Dependendo da natureza das atualizações, isso pode envolver edição de texto, ajuste de formatação ou adição de novas seções.4. Revise o documento revisado cuidadosamente para garantir

 db.collection_name.updateOne({"Name":"Sandy"}, {"$set":{"Name":"James", "email":"[email protected]"}})

As modificações acima mencionadas alteram o texto designado da maneira descrita abaixo:

/pt/images/sample-update-query.jpg

O processo de eliminação do campo de email pode ser executado sem esforço usando o operador $unset, que serve como uma ferramenta poderosa para remover com eficiência elementos indesejados de arrays e objetos em PHP. Essa operação envolve simplesmente especificar o elemento desejado a ser removido, seguido pela palavra-chave $unset, permitindo que os desenvolvedores gerenciem efetivamente as estruturas de dados enquanto mantêm clareza e precisão em seu código.

 db.collection_name.updateOne({"Name":"Sandy"}, {"$unset":{"email":"[email protected]"}})

Considere os seguintes dados de exemplo:

/pt/images/sample-data-for-update-example.jpg

Pode-se aumentar o conteúdo dos elementos presentes na matriz de itens empregando o operador $push, que permite a introdução de novas entradas nesse acúmulo de pontos de dados.

 db.collection_name.updateOne({"Name":"Pete"}, {"$push":{"items":"Plantain"}})

Aqui está a saída:

/pt/images/update-query-result-sample.jpg

Utilize o operador $each para inserir vários elementos simultaneamente:

 db.collection_name.updateOne({"Name":"Pete"}, {"$push":{"items": {"$each":["Almond", "Melon"]}}})

Aqui está a saída:

/pt/images/updated-data-multiple-updates.jpg

Conforme declarado anteriormente, a utilização do operador $pull resulta na remoção de um elemento especificado ou par chave-valor dentro de uma matriz.

 db.collection_name.updateOne({"Name":"Pete"}, {"$pull":{"items":"Plantain"}})

Os dados atualizados têm a seguinte aparência:

/pt/images/removed-data-sample.jpg

Para eliminar com eficiência vários elementos de um determinado array, utilize a função “include\_array” e passe o array desejado junto com a(s) chave(s) específica(s) ou intervalo de índice que você deseja excluir. Usando a função “include\_array” com o operador “$in”, você pode efetivamente filtrar vários elementos indesejados simultaneamente sem removê-los individualmente um por um.

 db.collection_name.updateOne({"Name":"Pete"}, {"$pull":{"items": {"$in":["Almond", "Melon"]} }}) 

Excluir um documento ou um campo

As palavras-chave “deleteOne” ou “deleteMany” são utilizadas para eliminar documentos de uma coleção de banco de dados. Ao empregar esses comandos, é crucial especificar o campo específico no qual a exclusão será baseada. Isso permite a remoção direcionada de registros específicos enquanto preserva outros que podem possuir valores diferentes para o campo designado.

 db.collection_name.deleteOne({"Name":"IDNoble"})

Para remover com eficiência vários documentos que compartilham chaves idênticas, é recomendável utilizar o método “deleteMany” em vez de tentar executar a consulta fornecida. Esta consulta específica irá erradicar todas as entradas no banco de dados cujo conteúdo apresenta “Xadrez” como uma de suas preferências listadas.

 db.collection.deleteMany({"Likes":"Chess"})

Operação de indexação

A indexação é uma técnica que aumenta a eficiência das consultas ao banco de dados, reduzindo o volume de dados que devem ser examinados. Essa otimização pode ser alcançada por meio da criação de índices em campos frequentemente utilizados no banco de dados, o que, em última análise, leva a um melhor desempenho da consulta.

Da mesma forma, o MongoDB emprega técnicas de indexação que espelham aquelas utilizadas na otimização de consultas SQL por meio da implementação de índices em campos específicos. Como ilustração, considere a criação de um índice ascendente no campo “Nome”.

 db.collection.createIndex({"Name":1})

Para listar seus índices:

 db.collection.getIndexes()

Além do método mencionado anteriormente, existem várias abordagens alternativas para gerar um índice no contexto do sistema de banco de dados MongoDB.

Agregação

O Aggregation Pipeline, uma iteração refinada do MapReduce, facilita a execução e a preservação de cálculos complexos no domínio do MongoDB. Em contraste com o MapReduce, que exige a criação de funções JavaScript separadas para os processos de mapeamento e redução, o Aggregation oferece uma experiência perfeita ao alavancar procedimentos MongoDB integrados exclusivamente.

Considere os seguintes dados de vendas, por exemplo:

/pt/images/sales-sample-data-from-mongodb-1.jpg

A estrutura de agregação do MongoDB permite o cálculo e a preservação do valor agregado de vendas para cada classificação de produto, implementando as seguintes etapas:

 db.sales.aggregate([{$group:{"_id":"$Section", "totalSold":{$sum:"$Sold"}}}, {$project:{"_id":0, "totalSold":1, "Section":"$_id"}}])

A consulta acima retorna o seguinte:

/pt/images/aggregate-result-sample-1.jpg

Consultas principais do MongoDB

O MongoDB fornece várias técnicas para consultar dados, o que pode aumentar a eficiência da consulta. As estruturas de consulta básicas descritas acima atendem a diferentes linguagens de programação e servem como um ponto de entrada para acessar bancos de dados MongoDB.

Apesar das possíveis variações na sintaxe fundamental, certas linguagens de programação reconhecem estilos distintos de maiúsculas e minúsculas. Como ilustração, o Python oferece suporte à formatação de caso de cobra, enquanto o JavaScript emprega convenções de caso de camelo. É crucial investigar e compreender os requisitos da plataforma tecnológica preferida antes de implementar as convenções de nomenclatura.