$project en las operaciones de agregación en MongoDB
El operador
$project
en las operaciones de agregación en MongoDB
te permite dar forma a la salida de tus consultas, seleccionando los campos que deseas mostrar y aplicando transformaciones a esos campos. Es una de las etapas fundamentales en las operaciones de agregación y te permite personalizar los resultados de tu consulta.
MongoDB almacena documentos JSON flexibles. Esta operación encaja en el flujo consultar → filtrar → transformar → agregar que verás en el tutorial completo.
Prueba en el editor y adapta los campos del documento a tu caso de uso.
Conexión a la base de datos
Antes de realizar operaciones de agregación, debes conectarte a la base de datos. Puedes usar un cliente MongoDB o una biblioteca de MongoDB en un lenguaje de programación como Node.js.
Node.js:
Ejemplo
const { MongoClientrequire("mongodb");
const uri = "mongodb://localhost:27017/tu_base_de_datos";
const client = new MongoClient(uri);
async function conectar() {
try {
await client.connect();
console.log("Conexión exitosa a la base de datos");
} catch (error) {
console.error("Error al conectar a la base de datos:", error);
}
}
conectar();
Utilizar el operador $project
El operador
$project
se utiliza en las operaciones de agregación para dar forma a la salida de la consulta. Puedes seleccionar los campos que deseas mostrar y aplicar expresiones para realizar transformaciones en los datos. Veamos algunos ejemplos.
Seleccionar campos específicos
Ejemplo
const pipeline = [
{
$project: {
_id: 0, // Para excluir el campo _id
nombre: 1, // Para incluir el campo 'nombre'
edad: 1 // Para incluir el campo 'edad'
}
}
];
const collection = client.db("tu_base_de_datos").collection("tu_coleccion");
const resultado = await collection.aggregate(pipeline).toArray();
console.log(resultado);
En este ejemplo, estamos seleccionando explícitamente los campos "nombre" y "edad" para mostrar en los resultados y excluyendo el campo "_id".
Aplicar transformaciones a los campos
Puedes utilizar expresiones para aplicar transformaciones a los campos durante la etapa de proyección. Por ejemplo, puedes calcular un nuevo campo a partir de otros campos existentes.
Ejemplo
const pipeline = [
{
$project: {
_id: 0,
nombre: 1,
edad: 1,
edadEnDosAños: { $add: [ '$edad', 2 ] } // Calcular la edad en dos años
}
}
];
const collection = client.db('tu_base_de_datos').collection('tu_coleccion');
const resultado = await collection.aggregate(pipeline).toArray();
console.log(resultado);
En este ejemplo, estamos calculando el campo "edadEnDosAños" al sumar 2 a la edad actual.
Renombrar campos
También puedes utilizar
$project
para renombrar campos.
Ejemplo
const pipeline = [
{
$project: {
_id: 0, // Excluir el campo '_id'
nombre_completo: "$nombre", // Renombrar el campo 'nombre' a 'nombre_completo'
edad: 1
}
}
];
const collection = client.db("tu_base_de_datos").collection("tu_coleccion");
const resultado = await collection.aggregate(pipeline).toArray();
console.log(resultado);
En este caso, hemos renombrado el campo "nombre" a "nombre_completo".
El operador
$project
es muy versátil y te permite dar forma a tus resultados de agregación de acuerdo a tus necesidades específicas. Asegúrate de ajustar las proyecciones y expresiones a tu caso de uso particular.
Resumen
- Repasa el ejemplo principal y varíalo con tus propios datos.
- Continúa con la lección siguiente del tutorial.