Consultar Dados Aninhados
Nesta etapa, você aprenderá como consultar documentos e arrays aninhados no MongoDB. Exploraremos diferentes técnicas para filtrar e recuperar dados aninhados específicos.
Primeiro, vamos redefinir nosso banco de dados com alguns dados de exemplo para demonstrar a consulta:
mongosh
Mude para o banco de dados bookstore
:
use bookstore
Vamos inserir vários livros com estruturas aninhadas:
db.books.insertMany([
{
title: "MongoDB Essentials",
author: {
name: "John Doe",
experience: { years: 5, specialization: "Database Design" }
},
tags: ["beginner", "database", "nosql"],
chapters: [
{ number: 1, title: "Introduction", pages: 25 },
{ number: 2, title: "Advanced Concepts", pages: 45 }
]
},
{
title: "Advanced Database Techniques",
author: {
name: "Jane Smith",
experience: { years: 8, specialization: "Distributed Systems" }
},
tags: ["advanced", "distributed", "nosql"],
chapters: [
{ number: 1, title: "System Design", pages: 35 },
{ number: 2, title: "Performance Optimization", pages: 55 }
]
}
])
Consultar um livro por um campo aninhado:
db.books.find({ "author.name": "John Doe" })
Consultar usando notação de ponto para objetos aninhados:
db.books.find({ "author.experience.specialization": "Database Design" })
Consultar usando array contains (contém):
db.books.find({ tags: "nosql" })
Consultar elementos de array aninhados:
db.books.find({ "chapters.pages": { $gt: 40 } })
O operador $gt
significa "maior que", então isso encontra livros com capítulos com mais de 40 páginas.
Consulta complexa combinando condições de objeto aninhado e array:
db.books.find({
"author.experience.years": { $gte: 5 },
tags: "advanced"
})
Isso encontra livros de autores com 5 ou mais anos de experiência e marcados como "advanced".