Dans cette étape, vous allez apprendre à formater et transformer les champs de sortie en utilisant les techniques de projection et d'agrégation de MongoDB. Nous allons explorer les façons de renommer, de calculer et de modifier les champs lors de la projection.
Tout d'abord, mettons à jour notre collection d'utilisateurs avec des informations plus détaillées :
// Effacer les documents existants
db.users.deleteMany({});
// Insérer des documents avec des données plus complexes
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"
}
]);
Utilisez l'opérateur $
pour renommer les champs lors de la projection :
db.users.find(
{},
{
fullName: "$name",
yearsOld: "$age",
annualSalary: "$salary",
_id: 0
}
);
Sortie d'exemple :
[
{ fullName: 'John Doe', yearsOld: 30, annualSalary: 75000 },
{ fullName: 'Jane Smith', yearsOld: 28, annualSalary: 85000 },
{ fullName: 'Mike Johnson', yearsOld: 35, annualSalary: 95000 }
]
Vous pouvez également effectuer des calculs en utilisant les opérateurs d'agrégation $
:
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
}
}
]);
Sortie d'exemple :
[
{
name: 'John Doe',
monthlySalary: 6250,
salaryTier: 'Junior'
},
{
name: 'Jane Smith',
monthlySalary: 7083.333333333333,
salaryTier: 'Senior'
},
{
name: 'Mike Johnson',
monthlySalary: 7916.666666666667,
salaryTier: 'Senior'
}
]
Points clés sur le formattage des champs de sortie :
- Utilisez
$
pour renommer les champs lors de la projection
- Le pipeline d'agrégation permet des transformations complexes de champs
- Vous pouvez effectuer des calculs et créer des champs conditionnels
- L'étape
$project
est puissante pour le formattage des champs