Ao terminar esta aula, você vai conseguir
- Diferenciar banco, coleção, documento e campo
- Relacionar JSON didático ao formato BSON usado pelo MongoDB
- Executar um filtro por igualdade e conferir o resultado
MongoDB é um sistema de gerenciamento de banco de dados orientado a documentos. Nesta aula, você vai reconhecer como ele organiza os dados e executar um filtro por igualdade. O resultado esperado é localizar somente os cursos da área escolhida e explicar onde esse dado estaria num servidor real.
Um documento é um conjunto de campos e valores. Pense numa ficha de cadastro: ela pode guardar nome, área e carga horária na mesma unidade. Uma coleção é como o arquivo que reúne fichas com a mesma finalidade, e o banco de dados agrupa coleções de uma aplicação. A analogia termina aqui: documentos não são folhas de papel, podem conter objetos e arrays aninhados e são armazenados em BSON, um formato binário com tipos próprios.
Leia um documento pelos nomes corretos
Em uma representação parecida com JSON, um curso pode aparecer assim:
{
"_id": "curso-101",
"titulo": "HTML do zero",
"area": "front-end",
"cargaHoras": 4,
"ativo": true
}titulo é um campo e "HTML do zero" é seu valor. _id identifica o documento
dentro da coleção. Num MongoDB real, se a aplicação não fornecer _id ao
inserir, o driver normalmente cria um ObjectId. Não use o título como
identificador só porque parece único; títulos mudam e podem se repetir.
BSON aceita tipos que JSON puro não representa diretamente, como ObjectId,
data e Decimal128. Por isso, o bloco acima é uma visualização didática, não uma
descrição de todos os bytes armazenados. O tipo correto importa nas consultas:
o texto "4" e o número 4 são valores diferentes.
Coleções flexíveis ainda precisam de regras
Documentos da mesma coleção não precisam ter todas as chaves idênticas. Essa flexibilidade ajuda uma aplicação a evoluir, mas não significa “guardar qualquer coisa”. Compare estes dois documentos:
db.cursos.insertMany([
{ titulo: 'HTML do zero', cargaHoras: 4, ativo: true },
{ titulo: 'CSS responsivo', cargaHoras: 'seis', ativo: true }
])O segundo valor usa texto onde o sistema espera número. O comando pode ser
aceito sem validação de schema, mas uma comparação numérica ou soma passará a
produzir resultados incoerentes. Esse é o erro reproduzível desta aula: mude
cargaHoras de um item do laboratório para "6" e filtre com $gte. O item
deixa de representar o mesmo tipo de dado, ainda que pareça semelhante na tela.
Em uma aplicação real, defina regras na entrada e considere a validação de schema da coleção. Flexibilidade é poder modelar documentos adequados, não abrir mão de consistência.
Faça a primeira consulta
No mongosh, um filtro por igualdade seria escrito assim:
db.cursos.find({ area: 'front-end' })O método find recebe um documento de filtro. O MongoDB compara o campo area
e devolve os documentos correspondentes. O laboratório desta página imita uma
parte pequena desse comportamento usando um array JSON no navegador. Ele não
abre conexão, não persiste alterações, não entende BSON completo e não substitui
um servidor MongoDB. Os operadores disponíveis nele são igualdade, $gte,
$gt, $lte, $lt, $ne e $in.
Execute o filtro inicial e confirme dois resultados. Depois troque o valor por
"dados" e espere um. Por fim, use um valor inexistente e espere uma lista
vazia. Sua missão é acrescentar documentos, prever a contagem e só então rodar.
Essa previsão transforma a consulta em uma hipótese verificável.
Na próxima aula, você vai decidir o formato dos documentos a partir das perguntas da aplicação, em vez de apenas copiar a ficha do mundo real.
Laboratório ao vivo
Encontre cursos em uma coleção
Execute o filtro inicial, troque a área e tente um valor inexistente. Este é um simulador didático de filtros, não uma conexão com MongoDB.
Resultado
Pare e pense
Qual afirmação descreve corretamente uma coleção no MongoDB?
Uma coleção reúne documentos. Documentos da mesma coleção podem variar de estrutura, embora a aplicação deva manter regras de modelagem coerentes.
Faça sem copiar
Acrescente dois cursos aos dados, filtre uma área que tenha exatamente dois resultados e anote quais campos você manteria obrigatórios no sistema real.
Fontes para consultar
Terminou a missão?
Marque apenas quando você conseguir explicar o conceito e concluir o desafio. O progresso fica salvo somente neste navegador.
Próxima: Modele documentos MongoDB por acesso aos dados →