Interroger des données imbriquées
Dans cette étape, vous allez apprendre à interroger des documents et des tableaux imbriqués dans MongoDB. Nous allons explorer différentes techniques pour filtrer et récupérer des données imbriquées spécifiques.
Tout d'abord, remettons notre base de données à zéro avec quelques données d'exemple pour démontrer l'interrogation :
mongosh
Changez vers la base de données bookstore :
use bookstore
Insérons plusieurs livres avec des structures imbriquées :
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 }
]
}
])
Interrogez un livre par un champ imbriqué :
db.books.find({ "author.name": "John Doe" })
Interrogez en utilisant la notation point pour les objets imbriqués :
db.books.find({ "author.experience.specialization": "Database Design" })
Interrogez en utilisant le tableau contient :
db.books.find({ tags: "nosql" })
Interrogez les éléments de tableau imbriqués :
db.books.find({ "chapters.pages": { $gt: 40 } })
L'opérateur $gt
signifie "plus grand que", donc cela trouve les livres avec des chapitres plus longs que 40 pages.
Requête complexe combinant des conditions d'objet et de tableau imbriqués :
db.books.find({
"author.experience.years": { $gte: 5 },
tags: "advanced"
})
Cela trouve les livres des auteurs ayant 5 ans d'expérience ou plus et étiquetés comme "advanced".