En este paso, aprenderá a formatear y transformar campos de salida utilizando las técnicas de proyección y agregación de MongoDB. Exploraremos maneras de renombrar, calcular y modificar campos durante la proyección.
Primero, actualicemos nuestra colección de usuarios con información más detallada:
// Borrar documentos existentes
db.users.deleteMany({});
// Insertar documentos con datos más complejos
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"
}
]);
Utilice el operador $
para renombrar campos durante la proyección:
db.users.find(
{},
{
fullName: "$name",
yearsOld: "$age",
annualSalary: "$salary",
_id: 0
}
);
Salida de ejemplo:
[
{ fullName: 'John Doe', yearsOld: 30, annualSalary: 75000 },
{ fullName: 'Jane Smith', yearsOld: 28, annualSalary: 85000 },
{ fullName: 'Mike Johnson', yearsOld: 35, annualSalary: 95000 }
]
También puede realizar cálculos utilizando los operadores de agregación $
:
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
}
}
]);
Salida de ejemplo:
[
{
name: 'John Doe',
monthlySalary: 6250,
salaryTier: 'Junior'
},
{
name: 'Jane Smith',
monthlySalary: 7083.333333333333,
salaryTier: 'Senior'
},
{
name: 'Mike Johnson',
monthlySalary: 7916.666666666667,
salaryTier: 'Senior'
}
]
Puntos claves sobre el formateo de campos de salida:
- Utilice
$
para renombrar campos durante la proyección
- La canalización de agregación permite transformaciones complejas de campos
- Puede realizar cálculos y crear campos condicionales
- La etapa
$project
es poderosa para el formateo de campos