O MongoDB Shell é um ambiente REPL (Read-Eval-Print Loop) adaptável baseado em JavaScript e Node.js para trabalhar com implementações do MongoDB. É uma ferramenta essencial para consultar dados, administrar bancos de dados e executar várias operações. Ele oferece uma interface intuitiva para o controle de bancos de dados, seja em um servidor remoto ou localmente.
Este artigo apresenta instruções passo a passo sobre como utilizar o MongoDB Shell.
Antes de iniciar as operações, certifique-se de que o MongoDB Shell está instalado no sistema. Caso contrário, baixe a versão apropriada no site oficial e siga as instruções de instalação para o seu sistema.
Visite a página oficial, escolha a versão para Windows e inicie o download.
Na página oficial, selecione a versão para macOS e inicie o processo de download. Alternativamente, você pode usar o Homebrew executando os comandos:
brew tap mongodb/brew
brew install mongosh
Consulte as instruções fornecidas no site para o sistema operacional Linux. Por exemplo, em um sistema baseado em Debian, siga estas etapas:
Adicione a chave GPG para o repositório do MongoDB:
curl -fsSL https://pgp.mongodb.com/server-7.0.asc | sudo gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg --dearmor
Adicione o repositório MongoDB ao sistema:
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list
Atualize a lista de pacotes:
sudo apt update
Instale o MongoDB:
sudo apt install mongodb-org -y

Após a instalação bem-sucedida, verifique a versão instalada:
mongod --version

Depois de instalado, habilite, inicie e verifique o serviço:
sudo systemctl enable mongod
sudo systemctl start mongod
sudo systemctl status mongod

Se você está procurando uma solução confiável, de alto desempenho e econômica para seus fluxos de trabalho, a Hostman oferece opções de hospedagem VPS Linux, incluindo Debian VPS, Ubuntu VPS e VPS CentOS.
Após a instalação, você pode estabelecer conexões com uma instância. Se for local, digite mongosh. Por padrão, ele se conecta à instância executando na porta 27017 em localhost:
mongosh

A seguinte sintaxe é usada para conectar-se a um servidor remoto:
mongodb+srv://<nome_de_usuário>:<senha>@<endereço_do_cluster>/<banco_de_dados>?retryWrites=true&w=majority
Substitua <nome_de_usuário>, <senha>, <endereço_do_cluster> e <banco_de_dados> pelas credenciais e detalhes reais de conexão.
Depois de conectado, você pode trabalhar com bancos de dados. Antes disso, a interface exibe uma mensagem de boas-vindas:

O banco de dados atribuído a uma nova instância do Shell é chamado test. Ele pode ser usado com segurança para experimentação.
Operações úteis são mostradas abaixo:
Execute show dbs para visualizar todos os bancos de dados disponíveis:
show dbs

A maioria dos comandos opera em um banco de dados ou coleção dentro dele. O objeto db representa o banco de dados atualmente selecionado:
db

Digite o comando use com o nome do banco de dados, por exemplo new_db, para criar ou mudar para ele:
use new_db

Substitua new_db pelo nome real do banco de dados.
Primeiro, insira um objeto com um nome em student_data no new_db existente:
db.student_data.insertOne({name: 'School has 500 students'})

Você também pode inserir vários documentos em student_data, cada um com um campo name e valores definidos. Isso permite inserção em lote de dados na coleção:
db.student_data.insertMany([
{name: 'School has 500 students'},
{name: 'School has 600 students'}
])

Após inserir os dados, exiba as coleções existentes:
show collections

Se você não quiser executar mais tarefas, saia da interface com:
exit

Agora você entende as operações básicas do Shell.
Ao trabalhar com o Shell, as operações CRUD (Criar, Ler, Atualizar, Excluir) são essenciais. Vamos executar algumas operações básicas:
Ao inserir novas informações em uma coleção, use a função insertOne. Vamos criar uma nova coleção e preenchê-la com as informações necessárias, incluindo name (nome), age (idade) e city (cidade):
db.collection.insertOne({ name: "Harry", age: 45, city: "Sydney" })

Você pode consultar documentos associados à coleção usando a função find. Por exemplo, todos os registros com idade superior a 25 são recuperados:
db.collection.find({ age: { $gt: 25 } }) // Condição em que a idade é maior que 25

Use as funções updateOne ou updateMany para modificar documentos existentes. Por exemplo, a idade do usuário chamado Harry é atualizada para 50:
db.collection.updateOne({ name: "Harry" }, { $set: { age: 50 } })

Use os métodos deleteOne ou deleteMany para remover registros da coleção. Este comando exclui um documento com o valor John no campo de name:
db.collection.deleteOne({ name: "John" })

Nesta etapa, execute operações complexas usando funcionalidades avançadas. Com ferramentas de depuração, análise e otimização de desempenho, o Shell ajuda a identificar gargalos e otimizar sua configuração.
Com os pipelines, é possível calcular registros e obter resultados agregados. Usando pipelines, você pode criar análises e transformações complexas para extrair informações valiosas dos dados brutos. Para executar um pipeline de estágios, use a função aggregate. Aqui está um exemplo:
db.collection.aggregate([
{ $match: { status: "A" } },
{ $group: { _id: "$city", total: { $sum: "$amount" } } },
{ $sort: { total: -1 } }
])

Neste script, o pipeline filtra documentos com status A, agrupa-os por city, soma os valores e classifica os resultados em ordem decrescente.
O pipeline de agregação é uma ferramenta poderosa para análise e transformação de dados. Ele é composto por várias etapas, cada uma alterando o fluxo de documentos. Essas etapas incluem:
$project: seleciona ou exclui campos específicos.
$match: aplica uma condição de consulta para filtragem.
$group: agrupa registros por um campo e calcula agregações.
$sort: ordena os resultados de acordo com um campo.
$limit: limita o número de registros.
$skip: ignora um número específico de registros.
Um paradigma eficaz para processar grandes conjuntos de dados. Para executar tarefas MapReduce, use o comando mapReduce:
// Dados de exemplo
db.collection.insertMany([
{ name: "Harry", age: 25, salary: 5000 },
{ name: "Buttler", age: 30, salary: 6000 },
{ name: "Morgan", age: 35, salary: 7000 }
]);
// Função Map
var mapFunction = function() {
emit(this.age, this.salary);
};
// Função Reduce
var reduceFunction = function(keyAge, valuesSalaries) {
return Array.sum(valuesSalaries);
};
// Executar MapReduce
db.runCommand({
mapreduce: "collection",
map: mapFunction,
reduce: reduceFunction,
out: "results"
});
db.results.find().forEach(printjson); // Exibir resultados

mapFunction emite a idade como chave e o salário como valor.A função reduceFunction soma os salários para cada grupo de idade.
Os resultados são armazenados em uma nova coleção chamada results, e a saída final é exibida com db.results.find().forEach(printjson).
O resultado é mostrado abaixo:

Use o operador de projeção para especificar quais campos devem ser incluídos ou excluídos do conjunto de resultados. Ele recupera todas as informações associadas a uma consulta específica, por exemplo, exibindo apenas os campos name e age. Vamos projetar apenas os campos name e age:
db.collection.find({}, { name: 1, age: 1 })

Classifique os resultados usando a função sort. Ela recupera todos os documentos do conjunto e os ordena em ordem decrescente de idade, exibindo primeiro os valores mais altos. Vamos classificar por idade em ordem decrescente:
db.collection.find().sort({ age: -1 })

Os usuários podem limitar o número de resultados com a função limit. Por exemplo, obtenha os três primeiros documentos da coleção. É útil para visualizar um pequeno subconjunto de dados sem buscar a lista completa. Vamos limitar a 3 resultados:
db.collection.find().limit(3)

Você pode pular registros usando a função skip. Por exemplo, pular os dois primeiros documentos da coleção. É útil para paginação ou ignorar os primeiros registros. Vamos pular os 2 primeiros resultados:
db.collection.find().skip(2)

Os usuários podem escrever scripts para automatizar tarefas dentro do Shell. Para fazer isso, salve o script em um arquivo .js e execute-o com mongosh. Isso é útil para realizar tarefas repetitivas de forma eficiente, como inserção de dados ou atualizações em lote:
mongosh script.js

Ao dominar os comandos do MongoDB, você obterá informações valiosas sobre seus dados.
Com a interface interativa do MongoDB Shell, você pode realizar tarefas administrativas repetitivas, como escrever, ler e modificar dados. Além disso, é possível consultar coleções existentes, adicionar novos objetos ao banco de dados e executar tarefas de administração. De operações CRUD simples a agregações e scripts complexos, os usuários podem usar a interface para executar uma ampla variedade de atividades.
Executando scripts, os usuários podem automatizar tarefas repetitivas com eficiência. Este tutorial abordou a instalação, configuração e tarefas administrativas para gerenciar bancos de dados, suas coleções e seus usuários.