MongoDB - Query Document

Bonjour là-bas, futurs mage de bases de données ! Aujourd'hui, nous plongeons dans le monde passionnant de MongoDB et nous apprenons à interroger des documents. En tant que votre enseignant de informatique du quartier, je suis là pour vous guider dans ce voyage, étape par étape. Alors, mettez vos casques virtuels, et c'est parti pour l'exploration !

MongoDB - Query Document

La méthode find()

La méthode find() est comme une chasse au trésor dans MongoDB. Elle nous aide à chercher des documents dans une collection. Imaginez que vous avez une collection appelée "students" dans votre base de données scolaire. Voyons comment nous pouvons utiliser find() pour récupérer des informations.

db.students.find()

Cette simple ligne de code va retourner tous les documents de la collection "students". C'est comme demander : "Montre-moi tous les étudiants !"

Mais que faire si nous voulons être plus spécifique ? disons que nous voulons trouver tous les étudiants nommés "John" :

db.students.find({name: "John"})

Cette requête va retourner tous les documents où le champ name est "John". C'est comme si nous disions : "Peux-tu me montrer tous les Johns dans la classe ?"

La méthode pretty()

Maintenant, rendons nos résultats agréables à l'œil avec la méthode pretty(). C'est comme donner à nos données un lifting!

db.students.find().pretty()

Cela va afficher les résultats de manière formatée, ce qui nous facilite la lecture. C'est comme organiser votre chambre en désordre - tout à coup, tout paraît bien mieux !

La méthode findOne()

Parfois, nous voulons simplement trouver un document. C'est là que findOne() devient pratique. C'est comme cueillir la première pomme de l'arbre.

db.students.findOne({name: "Sarah"})

Cela va retourner le premier document où le nom est "Sarah". S'il y a plusieurs Sarahs, il ne montrera que le premier qu'il rencontre.

Équivalents des clauses WHERE des SGBDR dans MongoDB

Maintenant, comparons les requêtes MongoDB aux clauses WHERE des SQL. C'est comme traduire entre deux langues !

Clause WHERE SQL Équivalent MongoDB
WHERE name = "John" {name: "John"}
WHERE age > 25 {age: {$gt: 25}}
WHERE age >= 25 {age: {$gte: 25}}
WHERE age < 25 {age: {$lt: 25}}
WHERE age <= 25 {age: {$lte: 25}}
WHERE age != 25 {age: {$ne: 25}}

AND dans MongoDB

Dans MongoDB, nous pouvons combiner des conditions en utilisant la logique AND. C'est comme dire : "Je veux cela ET cela."

db.students.find({name: "John", age: 20})

Cette requête va trouver tous les documents où le nom est "John" ET l'âge est 20.

OR dans MongoDB

Parfois, nous voulons trouver des documents qui correspondent à une condition OU une autre. MongoDB nous couvre !

db.students.find({$or: [{name: "John"}, {age: 20}]})

Cette requête va trouver tous les documents où le nom est "John" OU l'âge est 20.

Utilisation de AND et OR ensemble

Nous pouvons même combiner des conditions AND et OR. C'est comme créer une carte au trésor complexe !

db.students.find({
grade: "A",
$or: [{name: "John"}, {age: 20}]
})

Cette requête va trouver tous les documents où la note est "A" ET (le nom est "John" OU l'âge est 20).

NOR dans MongoDB

NOR, c'est comme dire "ni cela ni cela". C'est l'opposé de OR.

db.students.find({
$nor: [{name: "John"}, {age: 20}]
})

Cette requête va trouver tous les documents où le nom n'est PAS "John" ET l'âge n'est PAS 20.

NOT dans MongoDB

Enfin, nous avons l'opérateur NOT, qui est comme dire "anything but this".

db.students.find({
name: {$not: {$eq: "John"}}
})

Cette requête va trouver tous les documents où le nom n'est PAS "John".

Et voilà, mes chers étudiants ! Nous avons voyagé à travers le territoire des requêtes MongoDB, des recherches simples aux opérations logiques complexes. Souvenez-vous, la pratique rend parfait, alors n'ayez pas peur d'expérimenter avec ces requêtes. Qui sait ? Vous pourriez découvrir des trésors cachés dans vos données !

Avant de clore, nous avons un bref quiz. Pouvez-vous écrire une requête pour trouver tous les étudiants qui ont soit 18 ans OU sont nommés "Emma" ET ont une note de "B" ? Essayez, et n'oubliez pas d'utiliser la méthode pretty() pour que vos résultats soient présentables !

Bonne recherche, futurs maîtres des bases de données !

Credits: Image by storyset