Abfragen von geschachtelten Daten
In diesem Schritt lernen Sie, wie Sie in MongoDB geschachtelte Dokumente und Arrays abfragen. Wir werden verschiedene Techniken zur Filterung und Abrufung von spezifischen geschachtelten Daten erkunden.
Zunächst legen wir unsere Datenbank mit einigen Beispiel-Daten zurück, um die Abfrage zu demonstrieren:
mongosh
Wechseln Sie zur Datenbank bookstore
:
use bookstore
Lassen Sie uns mehrere Bücher mit geschachtelten Strukturen einfügen:
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 }
]
}
])
Abfragen eines Buches anhand eines geschachtelten Felds:
db.books.find({ "author.name": "John Doe" })
Abfrage mit Punktnotation für geschachtelte Objekte:
db.books.find({ "author.experience.specialization": "Database Design" })
Abfrage mit Array enthält:
db.books.find({ tags: "nosql" })
Abfragen von geschachtelten Array-Elementen:
db.books.find({ "chapters.pages": { $gt: 40 } })
Der $gt
-Operator bedeutet "größer als", so dass diese Bücher mit Kapiteln länger als 40 Seiten findet.
Komplexe Abfrage, die geschachtelte Objekt- und Array-Bedingungen kombiniert:
db.books.find({
"author.experience.years": { $gte: 5 },
tags: "advanced"
})
Dies findet Bücher von Autoren mit 5 oder mehr Jahren Erfahrung und mit dem Tag "advanced".