In diesem Schritt lernen Sie, wie Sie Ausgabefelder mithilfe von MongoDB's Projektion und Aggregationstechniken formatieren und transformieren. Wir werden Möglichkeiten zur Umbenennung, Berechnung und Modifizierung von Feldern während der Projektion erkunden.
Beginnen wir zunächst, unsere users
-Sammlung mit detaillierteren Informationen zu aktualisieren:
// Clear existing documents
db.users.deleteMany({});
// Insert documents with more complex data
db.users.insertMany([
{
name: "John Doe",
age: 30,
salary: 75000,
department: "Engineering"
},
{
name: "Jane Smith",
age: 28,
salary: 85000,
department: "Data Science"
},
{
name: "Mike Johnson",
age: 35,
salary: 95000,
department: "Management"
}
]);
Verwenden Sie den $
-Operator, um Felder während der Projektion umzubenennen:
db.users.find(
{},
{
fullName: "$name",
yearsOld: "$age",
annualSalary: "$salary",
_id: 0
}
);
Beispielausgabe:
[
{ fullName: 'John Doe', yearsOld: 30, annualSalary: 75000 },
{ fullName: 'Jane Smith', yearsOld: 28, annualSalary: 85000 },
{ fullName: 'Mike Johnson', yearsOld: 35, annualSalary: 95000 }
]
Sie können auch Berechnungen mit den $
-Aggregationoperators durchführen:
db.users.aggregate([
{
$project: {
name: 1,
monthlySalary: { $divide: ["$salary", 12] },
salaryTier: {
$switch: {
branches: [
{ case: { $lt: ["$salary", 80000] }, then: "Junior" },
{ case: { $gte: ["$salary", 80000] }, then: "Senior" }
],
default: "Unknown"
}
},
_id: 0
}
}
]);
Beispielausgabe:
[
{
name: 'John Doe',
monthlySalary: 6250,
salaryTier: 'Junior'
},
{
name: 'Jane Smith',
monthlySalary: 7083.333333333333,
salaryTier: 'Senior'
},
{
name: 'Mike Johnson',
monthlySalary: 7916.666666666667,
salaryTier: 'Senior'
}
]
Wichtige Punkte zur Formatierung von Ausgabefeldern:
- Verwenden Sie
$
, um Felder während der Projektion umzubenennen
- Die Aggregationspipeline ermöglicht komplexe Feldtransformationen
- Sie können Berechnungen durchführen und bedingte Felder erstellen
- Die
$project
-Stufe ist für die Feldformatierung leistungsfähig