Zusammenfassen von MongoDB-Daten

MongoDBMongoDBBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab lernen Sie, wie Sie in MongoDB grundlegende Aggregationsoperationen durchführen, einschließlich der Berechnung von Summen, das Finden von Mindest- und Maximalwerten, das Zählen von Dokumenten, die Berechnung von Durchschnittswerten und die Generierung von Berichten. Das Lab behandelt praktische Beispiele mit einer Beispiel-Buch-Sammlung und demonstriert die Stärke des Aggregationsframeworks von MongoDB, um aussagekräftige Erkenntnisse aus Ihren Daten zu extrahieren.

Das Lab führt Sie Schritt für Schritt durch die Anweisungen, beginnend mit der Berechnung von Gesamtwerten wie dem Gesamtwert der Bücher und der Gesamtmenge. Anschließend lernen Sie, wie Sie den niedrigsten und höchsten Buchpreis finden, die Anzahl der Dokumente zählen und den durchschnittlichen Buchpreis berechnen. Schließlich werden Sie die Generierung von Berichten zur Zusammenfassung der Daten in Ihrer Sammlung erkunden.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL mongodb(("MongoDB")) -.-> mongodb/QueryOperationsGroup(["Query Operations"]) mongodb(("MongoDB")) -.-> mongodb/DataTypesGroup(["Data Types"]) mongodb(("MongoDB")) -.-> mongodb/AggregationOperationsGroup(["Aggregation Operations"]) mongodb/QueryOperationsGroup -.-> mongodb/find_documents("Find Documents") mongodb/QueryOperationsGroup -.-> mongodb/query_with_conditions("Query with Conditions") mongodb/QueryOperationsGroup -.-> mongodb/sort_documents("Sort Documents") mongodb/QueryOperationsGroup -.-> mongodb/project_fields("Project Fields") mongodb/DataTypesGroup -.-> mongodb/use_numeric_data_types("Use Numeric Data Types") mongodb/AggregationOperationsGroup -.-> mongodb/group_documents("Group Documents") mongodb/AggregationOperationsGroup -.-> mongodb/aggregate_group_totals("Aggregate Group Totals") subgraph Lab Skills mongodb/find_documents -.-> lab-422093{{"Zusammenfassen von MongoDB-Daten"}} mongodb/query_with_conditions -.-> lab-422093{{"Zusammenfassen von MongoDB-Daten"}} mongodb/sort_documents -.-> lab-422093{{"Zusammenfassen von MongoDB-Daten"}} mongodb/project_fields -.-> lab-422093{{"Zusammenfassen von MongoDB-Daten"}} mongodb/use_numeric_data_types -.-> lab-422093{{"Zusammenfassen von MongoDB-Daten"}} mongodb/group_documents -.-> lab-422093{{"Zusammenfassen von MongoDB-Daten"}} mongodb/aggregate_group_totals -.-> lab-422093{{"Zusammenfassen von MongoDB-Daten"}} end

Berechne Summen

In diesem Schritt lernen Sie, wie Sie mit dem Aggregationsframework von MongoDB Gesamtwerte berechnen. Wir verwenden eine Beispiel-Buch-Sammlung, um zu zeigen, wie numerische Felder zusammengefasst werden.

Lassen Sie uns zunächst die MongoDB-Shell starten und eine Beispiel-Buch-Sammlung erstellen:

mongosh

Jetzt erstellen wir eine Sammlung von Büchern mit Preisen:

use bookstore

db.books.insertMany([
    { title: "Python Basics", price: 29.99, quantity: 50 },
    { title: "MongoDB Essentials", price: 39.99, quantity: 30 },
    { title: "Data Science Guide", price: 45.50, quantity: 25 },
    { title: "Web Development", price: 34.75, quantity: 40 }
])

Um den Gesamtwert aller Bücher zu berechnen, verwenden wir den Aggregationsoperator $sum:

db.books.aggregate([
  {
    $group: {
      _id: null,
      totalBookValue: { $sum: { $multiply: ["$price", "$quantity"] } }
    }
  }
]);

Beispielausgabe:

[
  {
    _id: null,
    totalBookValue: 5197.25
  }
]

Zerlegen wir, was diese Aggregation macht:

  • $group gruppiert alle Dokumente zusammen
  • _id: null bedeutet, dass wir die gesamte Sammlung aggregieren
  • $multiply berechnet den Gesamtwert für jedes Buch (Preis * Menge)
  • $sum addiert alle diese Werte

Sie können auch andere Summen berechnen, wie die Gesamtzahl der Bücher:

db.books.aggregate([
  {
    $group: {
      _id: null,
      totalQuantity: { $sum: "$quantity" }
    }
  }
]);

Beispielausgabe:

[
  {
    _id: null,
    totalQuantity: 145
  }
]

Finde Min- und Max-Werte

In diesem Schritt lernen Sie, wie Sie mit dem Aggregationsframework von MongoDB Minimale und maximale Werte finden. Wir verwenden weiterhin unsere Buchhandlungssammlung aus dem vorherigen Schritt.

Lassen Sie uns zunächst unsere vorhandene Sammlung überprüfen:

use bookstore
db.books.find()

Um den niedrigsten und höchsten Buchpreis zu finden, verwenden wir die Aggregationsoperatoren $min und $max:

db.books.aggregate([
  {
    $group: {
      _id: null,
      lowestPrice: { $min: "$price" },
      highestPrice: { $max: "$price" }
    }
  }
]);

Beispielausgabe:

[
  {
    _id: null,
    lowestPrice: 29.99,
    highestPrice: 45.50
  }
]

Wir können auch die niedrigste und höchste Menge finden:

db.books.aggregate([
  {
    $group: {
      _id: null,
      lowestQuantity: { $min: "$quantity" },
      highestQuantity: { $max: "$quantity" }
    }
  }
]);

Beispielausgabe:

[
  {
    _id: null,
    lowestQuantity: 25,
    highestQuantity: 50
  }
]

Für detailliertere Erkenntnisse können wir das Buch mit dem niedrigsten und höchsten Preis finden:

db.books.aggregate([
  {
    $sort: { price: 1 }
  },
  {
    $limit: 1
  },
  {
    $project: {
      title: 1,
      price: 1
    }
  }
]);

Beispielausgabe:

[
  {
    _id: ObjectId("..."),
    title: "Python Basics",
    price: 29.99
  }
]

Zähle Dokumente

In diesem Schritt lernen Sie verschiedene Methoden, um in MongoDB Dokumente zu zählen, indem Sie verschiedene Techniken anwenden. Wir arbeiten weiterhin mit unserer Buchhandlungssammlung aus den vorherigen Schritten.

Lassen Sie uns zunächst unsere vorhandene Sammlung überprüfen:

use bookstore
db.books.find()

Es gibt mehrere Möglichkeiten, Dokumente in MongoDB zu zählen. Lassen Sie uns sie erkunden:

  1. Grundlegende Zählmethode:
db.books.countDocuments();

Beispielausgabe:

4
  1. Zählen von Dokumenten mit einem Filter:
db.books.countDocuments({ price: { $gt: 35 } });

Dies zählt Bücher mit einem Preis von mehr als 35.

Beispielausgabe:

2
  1. Verwenden des Aggregationsframeworks zum Zählen:
db.books.aggregate([
  {
    $match: { quantity: { $gte: 30 } }
  },
  {
    $count: "booksWithHighQuantity"
  }
]);

Dies zählt Bücher mit einer Menge von 30 oder mehr.

Beispielausgabe:

[
  {
    booksWithHighQuantity: 3
  }
]
  1. Zählen von eindeutigen Werten:
db.books.aggregate([
  {
    $group: {
      _id: "$title",
      count: { $sum: 1 }
    }
  }
]);

Dies zeigt, wie oft jeder Buchtitel vorkommt.

Beispielausgabe:

[
  {
    _id: "Python Basics",
    count: 1
  },
...
]

Berechne Durchschnittswerte

In diesem Schritt lernen Sie, wie Sie mit dem Aggregationsframework von MongoDB Durchschnittswerte berechnen. Wir arbeiten weiterhin mit unserer Buchhandlungssammlung aus den vorherigen Schritten.

Lassen Sie uns zunächst unsere vorhandene Sammlung überprüfen:

use bookstore
db.books.find()
  1. Berechne den durchschnittlichen Buchpreis:
db.books.aggregate([
  {
    $group: {
      _id: null,
      averagePrice: { $avg: "$price" }
    }
  }
]);

Beispielausgabe:

[
  {
    _id: null,
    averagePrice: 37.56
  }
]
  1. Berechne den durchschnittlichen Bestand mit Aufrundung:
db.books.aggregate([
  {
    $group: {
      _id: null,
      averageQuantity: { $avg: "$quantity" }
    }
  },
  {
    $project: {
      averageQuantity: { $round: ["$averageQuantity", 2] }
    }
  }
]);

Beispielausgabe:

[
  {
    _id: null,
    averageQuantity: 36.25
  }
]
  1. Durchschnittlicher Preis durch bedingte Gruppierung:
db.books.aggregate([
  {
    $group: {
      _id: {
        priceCategory: {
          $switch: {
            branches: [
              { case: { $lt: ["$price", 35] }, then: "Budget" },
              { case: { $gte: ["$price", 35] }, then: "Premium" }
            ]
          }
        }
      },
      averagePrice: { $avg: "$price" }
    }
  }
]);

Beispielausgabe:

[
  {
    _id: { priceCategory: "Budget" },
    averagePrice: 32.37
  },
  {
    _id: { priceCategory: "Premium" },
    averagePrice: 42.75
  }
]

Generiere Berichte

In diesem letzten Schritt lernen Sie, wie Sie mit dem Aggregationsframework von MongoDB komplexere Berichte generieren. Wir kombinieren mehrere Aggregationsstufen, um aus unserer Buchhandlungssammlung aufschlussreiche Berichte zu erstellen.

Lassen Sie uns zunächst unsere vorhandene Sammlung überprüfen:

use bookstore
db.books.find()
  1. Umfassender Buchbestandsbericht:
db.books.aggregate([
  {
    $project: {
      title: 1,
      totalValue: { $multiply: ["$price", "$quantity"] },
      inventoryStatus: {
        $switch: {
          branches: [
            { case: { $lt: ["$quantity", 30] }, then: "Low Stock" },
            { case: { $gte: ["$quantity", 30] }, then: "In Stock" }
          ]
        }
      }
    }
  },
  {
    $sort: { totalValue: -1 }
  }
]);

Beispielausgabe:

[
  {
    _id: ObjectId("..."),
    title: "Python Basics",
    totalValue: 1499.50,
    inventoryStatus: "In Stock"
  },
...
]
  1. Preisbereichsverteilungsbericht:
db.books.aggregate([
  {
    $bucket: {
      groupBy: "$price",
      boundaries: [0, 35, 45, 100],
      default: "Other",
      output: {
        count: { $sum: 1 },
        titles: { $push: "$title" }
      }
    }
  }
]);

Beispielausgabe:

[
  {
    _id: 0,
    count: 2,
    titles: ["Python Basics", "Web Development"]
  },
  {
    _id: 35,
    count: 1,
    titles: ["MongoDB Essentials"]
  },
...
]
  1. Detailierter Verkaufsleistungsbericht:
db.books.aggregate([
  {
    $group: {
      _id: {
        priceCategory: {
          $switch: {
            branches: [
              { case: { $lt: ["$price", 35] }, then: "Budget" },
              { case: { $gte: ["$price", 35] }, then: "Premium" }
            ]
          }
        }
      },
      totalBooks: { $sum: 1 },
      totalQuantity: { $sum: "$quantity" },
      totalValue: { $sum: { $multiply: ["$price", "$quantity"] } },
      avgPrice: { $avg: "$price" }
    }
  },
  {
    $project: {
      _id: 0,
      priceCategory: "$_id.priceCategory",
      totalBooks: 1,
      totalQuantity: 1,
      totalValue: { $round: ["$totalValue", 2] },
      avgPrice: { $round: ["$avgPrice", 2] }
    }
  }
]);

Beispielausgabe:

[
  {
    priceCategory: "Budget",
    totalBooks: 2,
    totalQuantity: 90,
    totalValue: 2984.50,
    avgPrice: 32.37
  },
  {
    priceCategory: "Premium",
    totalBooks: 2,
    totalQuantity: 55,
    totalValue: 2212.75,
    avgPrice: 42.75
  }
]

Zusammenfassung

In diesem Lab lernen Sie, wie Sie mit dem Aggregationsframework von MongoDB Summen berechnen, Minimale und maximale Werte finden, Dokumente zählen, Durchschnittswerte berechnen und Berichte generieren. Zunächst berechnen Sie den Gesamtwert aller Bücher in einer Beispielbuchsammlung, indem Sie den Aggregationsoperator $sum verwenden. Sie lernen auch, wie Sie die Gesamtzahl der Bücher berechnen. Anschließend finden Sie die niedrigsten und höchsten Buchpreise mit den Aggregationsoperatoren $min und $max. Danach lernen Sie, wie Sie die Anzahl der Dokumente in der Sammlung zählen und den durchschnittlichen Buchpreis berechnen.