Artigo original: How to get started with MongoDB in 10 minutes

Escrito por: Navindu Jayatilake

O MongoDB é um banco de dados NoSQL, orientado a documentos do tipo rich document.

Se você é um completo iniciante em NoSQL, eu recomendo dar uma olhada no artigo sobre NoSQL (texto em inglês) que publiquei anteriormente.

Hoje, eu gostaria de compartilhar algumas das questões básicas sobre os comandos do MongoDB, como consultas, filtragem, exclusão, atualização e assim por diante.

Bem, chega de papo, vamos trabalhar!

Configuração

Para trabalhar com o  MongoDB, primeiramente, é preciso instalá-lo no seu computador. Para fazer isso, visite o centro de downloads oficial (em inglês) e baixe a versão do seu sistema operacional específico. Para este artigo, utilizei o Windows.

Após baixar o setup do servidor do MongoDB em sua versão Community, você passará por uma sequência de pressionamentos do botão "Next" (ou "Avançar") no momento da instalação. Quando terminar, vá para a unidade C (provavelmente) onde você instalou o MongoDB. Vá até a pasta Arquivos de Programas (ou Program Files) e selecione o diretório do MongoDB.

C: -> Program Files -> MongoDB -> Server -> 5.0(versão) -> bin

No diretório bin, você encontrará dois arquivos executáveis interessantes.

  • mongod
  • mongo

Vamos falar sobre esses dois arquivos.

mongod significa "Mongo Daemon". mongod é um processo em segundo plano usado pelo MongoDB. A finalidade principal do mongod é gerenciar todas as tarefas do servidor do MongoDB. Exemplos dessas tarefas seriam aceitar solicitações, responder ao client e gerenciar a memória.

mongo é um shell de linha de comando que pode interagir com o client (por exemplo, com administradores e desenvolvedores de sistemas).

Agora, vejamos como podemos colocar esse servidor a funcionar. Para fazer isso no Windows, primeiramente, você precisa criar alguns diretórios na sua unidade C. Abra o prompt de comando na unidade C e faça o seguinte:

C:\> mkdir data/db

A finalidade desses diretórios é dar ao MongoDB uma pasta que ele necessita para armazenar todos os dados. O caminho de diretório padrão do MongoDB é /data/db na unidade. Assim, é necessário fornecer para ele esses diretórios.

Se você iniciar o servidor do MongoDB sem esses diretórios, provavelmente receberá a seguinte mensagem de erro:

r04FRmRGqKUaclGh4ZDo3YsMwOlXMVm2T3bJ
Tentando iniciar o servidor do mongodb sem os diretórios \data\db

Após criar essas duas pastas, volte à pasta bin que você tem no diretório do mongodb e abra o prompt de comando (ou o powershell) dentro dela. Execute o seguinte comando:

mongod

Aí está! Agora, seu servidor do MongoDB está pronto e funcionando!

Para trabalhar com esse servidor, precisamos de um mediador. Assim sendo, abra outra janela de comando dentro da pasta bin e execute o seguinte comando:

mongo

Depois de executar esse comando, navegue até o shell, onde executaremos o comando mongod (nosso servidor). Você verá uma mensagem dizendo "connection accepted" ("conexão aceita"). Isso significa que nossa instalação e configuração tiveram sucesso!

Agora, basta executar no shell do mongo:

db
TK2JGg4JXAj0eG9JBzl89ABEF3JuKAwnw2dx
Inicialmente, você tem um banco de dados (db) chamado de ‘test’

Configurando as variáveis de ambiente

Para economizar tempo, você pode configurar suas variáveis de ambiente. No Windows, fazemos isso nos menus abaixo:

Configurações avançadas do sistema -> Variáveis de ambiente -> Path(Em variáveis do sistema) -> Editar

Simplesmente copie o caminho de sua pasta bin e pressione OK! No meu caso, está em C:\Program Files\MongoDB\Server\5.0\bin

Tudo pronto!

Trabalhando com o MongoDB

Existem algumas GUIs (Interfaces Gráficas de Usuário) que funcionam com o servidor do MongoDB, como o MongoDB Compass, Studio 3T e assim por diante.

Eles fornecem uma interface gráfica para que você possa trabalhar facilmente com seu banco de dados e realizar consultas em vez de usar um shell e digitar as consultas manualmente.

Neste artigo, usaremos o prompt de comando para fazermos nosso trabalho.

Agora é o momento de mergulhar nos comando do MongoDB que ajudarão você a usá-lo com seus projetos futuros.

  1. Abra seu prompt de comando e digite mongod para iniciar o servidor do MongoDB.

2. Abra outro shell e digite mongo para se conectar ao servidor de banco de dados do MongoDB.

1. Como encontrar o banco de dados em que você está trabalhando no momento

db
o6puQoPSpGCW8-AgizHzAv3Qpywtzsgwd26N

Esse comando mostrará o banco de dados em que você se encontra no momento. test é o banco de dados inicial, que vem por padrão.

2. Como listar os bancos de dados

show databases
Q-G8NzP5OAXh0Y3OfdOtqFxlFG-tLErPlPSi

No momento, eu tenho quatro bancos de dados. São eles: CrudDB, admin, config e local.

3. Como ir para um banco de dados específico

use <nome_do_bd>
UIRueBuX-r6nRXA-qd6Uv95IBd0UbhVvMZtZ

Aqui, eu passei a usar o banco de dados local. Você pode conferir isso se tentar usar o comando db para mostrar o nome do banco de dados atual.

4. Como criar um banco de dados

Com os RDBMS (Sistemas de gerenciamento de bancos de dados relacionais), nós temos bancos de dados, tabelas, linhas e colunas.

Porém, nos bancos de dados NoSQL, como o MongoDB, os dados são armazenados no formato BSON (uma versão binária do JSON). Eles são armazenados em estruturas chamadas "collections" (coleções).

Nos bancos de dados SQL, eles seriam semelhantes às tabelas.

e7ygVKXaPcqcqCyvurAeUzAbmmREoA6p72V2
oxeGaPqbZ2pmmZx3WcDo8CXIL4J09PbecBWW
Termos de SQL e NoSQL, por Victoria Malaya

Certo, vamos falar sobre como criar um banco de dados no shell do mongo.

use <nome_do_bd>

Espere, mas já usamos esse comando antes! Por que estamos usando esse comando novamente?

No servidor do MongoDB, se o seu banco de dados já estiver presente, ao usar esse comando, você irá para o banco de dados em questão.

Se o banco de dados, no entanto, não estiver presente, o servidor do MongoDB criará o banco de dados para você. Em seguida, navegaremos para ele.

Após criar um banco de dados, executar o comando show database não mostrará seu banco de dados recém-criado. Isso ocorre porque, até que ele tenha dados (documentos) internamente, ele não aparecerá em sua lista de bancos de dados.

5. Como criar uma coleção

Navegue até o banco de dados recém-criado com o comando use.

De fato, existem dias maneiras de se criar uma coleção. Vejamos as duas.

Uma maneira de inserir dados na coleção:

db.myCollection.insert({"name": "john", "age" : 22, "location": "colombo"})

Esse comando criará a coleção myCollection mesmo que ela ainda não exista. Em seguida, serão inseridos na coleção um documento com name e age. Elas são coleções sem limites de tamanho.

A segunda maneira é exibida abaixo:

2.1 Criar uma coleção sem limite de tamanho

db.createCollection("myCollection")

2.2 Criar uma coleção com limite de tamanho

db.createCollection("mySecondCollection", {capped : true, size : 2, max : 2})

Nesse momento, você criará uma coleção sem inserir dados.

Uma "coleção com limite" tem uma contagem máxima de documentos que evita o excesso de documentos.

Neste exemplo, habilitamos os limites ao definir o valor de capped como true.

size: 2 representa o limite de dois megabytes, enquanto max: 2 define o número máximo de documentos como sendo 2.

Agora, se você tentar inserir mais de dois documentos a mySecondCollection e se usar o comando find (sobre o qual falaremos em instantes), você verá apenas os documentos inseridos mais recentemente. Lembre-se de que isso não significa que os primeiros elementos foram excluídos — eles apenas não estão sendo exibidos.

6. Como inserir dados

Podemos inserir dados em uma nova coleção, ou em uma coleção previamente criada.

uO4agHbI85kMJrQmF1L9pMmhn0WcgngmoPsI
Maneiras de se armazenar dados em um JSON: pares chave-valor, arrays de strings, objetos e arrays de objetos

Existem três métodos de inserção de dados.

  1. insertOne() é usado para inserir um único documento.
  2. insertMany() é usado para inserir mais de documento.
  3. insert() é usado para inserir quantos documentos você quiser.

Abaixo, temos alguns exemplos:

  • insertOne()
db.myCollection.insertOne(
  {
    "name": "navindu", 
    "age": 22
  }
)
  • insertMany()
db.myCollection.insertMany([
  {
    "name": "navindu", 
    "age": 22
  },
  {
    "name": "kavindu", 
    "age": 20
  },

  {
    "name": "john doe", 
    "age": 25,
    "location": "colombo"
  }
])

O método insert() é semelhante ao método insertMany().

Além disso, observe que inserimos uma nova propriedade chamada location no documento para John Doe. Assim, se você usar find, verá somente para john doe a propriedade location anexada.

Essa pode ser uma vantagem no que diz respeito aos bancos de dados NoSQL, como o MongoDB, pois permite a escalabilidade.

QyCgwWUHWoporNunUvoRgdVry-x0QyA8qSxd
Dados inseridos com sucesso

7. Como consultar dados

Aqui está como você pode consultar todos os dados de uma coleção:

db.myCollection.find()
rzcViLqDrTy5gqSFoY6n3N7dciNxFTY62eRL
Resultado

Para você ver esses dados de modo mais claro, basta adicionar .pretty() ao final do comando. Isso exibirá o documento em um formato melhor em JSON .

db.myCollection.find().pretty()
gMIbpNqjr9jmJ3YVDZruX1skX0PCvSruuZWB
Resultado

Espere... nesses exemplos, você percebeu algo como _id? Como isso chegou aí?

Bem, sempre que você insere um documento, o MongoDB adiciona automaticamente um campo _id, o qual identifica exclusivamente cada documento. Se não quiser que ele seja exibido, basta executar o comando abaixo

db.myCollection.find({}, _id: 0).pretty()

A seguir, veremos a filtragem dos dados.

Se quiser exibir alguns documentos específicos, você pode especificar um único detalhe do documento que você deseja exibir.

db.myCollection.find(
  {
    name: "john"
  }
)
TiBBNNp9gmxtPXaHd5BSZ7MkSrv1JkRzkMI1
Resultado

Digamos que você queira exibir apenas pessoas cuja idade (em inglês, age) é inferior a 25. Você pode usar $lt para filtrar desse modo.

db.myCollection.find(
  {
    age : {$lt : 25}
  }
)

Da mesma forma que $lt representa "menor que", $gt representa "maior que", $lte representa "menor que ou igual a", $gte representa "maior que ou igual a"  e  $ne representa "diferente de".

8. Como atualizar documentos

Suponhamos que você deseje atualizar a idade (age) e o endereço (address) de uma pessoa. Como fazer isso? Aqui temos um exemplo:

db.myCollection.update({age : 20}, {$set: {age: 23}})

O primeiro argumento é o campo de qual documento você deseja atualizar. Aqui, eu especifiquei age por questão de simplicidade. Em um ambiente de produção, você pode usar algo como o campo _id.

Sempre é melhor usar algo como o campo _id para atualizar uma única linha. Isso ocorre porque diversos campos podem ter os mesmos valores para age e name. Assim, se você atualizar uma única linha, afetará todas as linhas que tenham o mesmo nome e a mesma idade.

qQH53vM6-peOzS-z9k5YjMoS9R2z1APJrXvB
Resultado

Se você atualizar um documento dessa maneira com uma nova propriedade - digamos, por exemplo, location- o documento será atualizado com o novo atributo. Se usar find, o resultado será:

YqJpPAw7d5NPSTzStCevUmgoDTm6FkgPLZ-7
Resultado

Se quiser remover uma propriedade de um único documento, você pode fazer algo assim (digamos que você queira excluir age):

db.myCollection.update({name: "navindu"}, {$unset: age});

9. Como remover um documento

Como mencionei anteriormente, quando você quiser atualizar ou excluir um documento, basta especificar o _id, não apenas name, age ou location.

db.myCollection.remove({name: "navindu"});

10. Como remover uma coleção

db.myCollection.remove({});

Observe que isso não equivale ao método drop(). A diferença é que drop() é usado para remover todos os documentos dentro de uma coleção, enquanto o método remove() é usado para excluir todos os documentos, juntamente com a própria coleção.

Operadores lógicos

O MongoDB oferece operadores lógicos. A imagem abaixo resume os tipos diferentes de operadores lógicos.

xO27jGeclafiAUt0a0VYRifhDpISvZcIkhRD
VsHbrchxUETWqCFhZc6QvmSPUdrbfOHYEH3L
Referência: manual do MongoDB

Digamos que você queira exibir as pessoas cuja idade é inferior a 25 e também aquelas cuja localidade é Colombo. O que podemos fazer?

Podemos usar o operador $and!

db.myCollection.find({$and:[{age : {$lt : 25}}, {location: "colombo"}]});

Para encerrar, vamos falar de agregação.

Agregação

Um lembrete rápido sobre o que aprendemos sobre funções de agregação em bancos de dados em SQL:

JHcuA7YLBiFiCBn1QiOS8NYCUELbGg-LKDSN
Funções de agregação em bancos de dados em SQL. Referência: Tutorial Gateway

De um modo simplificado, a agregação agrupa valores de vários documentos e os resume de algum modo.

Imagine que temos alunos do gênero masculino e feminino em uma coleção recordBook e que queremos uma contagem total de cada um deles. Para obter a soma de masculinos (male) e femininos (females), poderíamos usar a função de agregação $group.

db.recordBook.aggregate([
  {
    $group : {_id : "$gender", result: {$sum: 1}}
  }  
]);
NeK7Wx3lQ1AaUhGD1VERqmaluAl9qrsXpDMs
Resultado

Em resumo

Aqui, discutimos o básico sobre o MongoDB que você precisará para criar uma aplicação. Espero que tenha gostado do artigo – obrigado pela leitura!

Se tiver perguntas com relação a este tutorial, fique à vontade para entrar em contato com o autor pelo Facebook, Twitter ou Instagram (em inglês).

Vejo vocês em um próximo artigo! ❤️ ✌

Link para outro artigo do autor sobre o assunto: NoSQL (em inglês)