Uso del operador Redact para filtrar documentos en MongoDB
Clase 16 de 21 • Curso de MongoDB: Aggregation Framework
Resumen
¿Qué es el operador Redact y cómo puede optimizar tus consultas?
El operador Redact es una herramienta poderosa y peculiar en la manipulación de documentos en bases de datos, específicamente diseñada para incluir o excluir partes de un documento según condiciones específicas. A diferencia de Match, que posiblemente ya hayas utilizado, Redact te permite un control más detallado sobre subdocumentos dentro de un documento. Esto significa un potencial aumento en la eficiencia de tus consultas al decidir qué información mantener o descartar.
¿Cómo trabajar con Redact en MongoDB?
Para entender cómo se implementa el operador Redact, pongamos en práctica un ejemplo concreto: supongamos que necesitamos excluir todas aquellas propiedades de Airbnb con calificaciones menores a 90. Veamos cómo hacerlo:
db.collection.aggregate([
{
$redact: {
$cond: {
if: { $gte: [ "$Review.Scores.Rating", 95 ] },
then: "$$KEEP",
else: "$$PRUNE"
}
}
},
{ $count: "calificaciones Excelentes" }
])
- Condicional
if
: Indicar qué condición deben cumplir los documentos para ser mantenidos. En este ejemplo, se evalúa si las calificaciones son mayores o iguales a 95. - Instrucción
then
: Si el documento cumple con la condición, se utiliza$$KEEP
para conservar dicho documento en las siguientes fases. - Instrucción
else
: Si no cumple con la condición, se utiliza$$PRUNE
para excluirlo.
Elementos clave del código
- Campo de referencia: Utilizamos "$Review.Scores.Rating" para verificar la calificación de cada propiedad.
- Condicional explícita: Encierra la lógica dentro del
$cond
para asegurar que MongoDB reconozca que se está formulando una condición. - Contador final: El uso de
$count
permite saber cuántos documentos cumplen la condición, proporcionando una cifra concreta del filtrado.
¿Qué precauciones debes tomar al usar Redact?
Adoptar el operador Redact debe venir acompañado de precauciones específicas:
- Evaluar el impacto en recursos: Redact puede ser más demandante en términos de recursos que Match, así que asegúrate de que su uso sea realmente necesario para tus necesidades de filtrado.
- Cuidado en pipeline: Usar Redact como etapa dentro de un pipeline implica que los documentos y sus respectivos campos, incluidos internamente, serán automáticamente excluidos o mantenidos para las etapas que siguen.
Finalmente, te invitamos a reflexionar sobre otros tipos de consultas donde Redact podría ayudar a resolver problemas de manera directa y eficiente. ¡Comparte tus ideas y desafíos en los comentarios! Así contribuirás al aprendizaje continuo y colaborativo en esta plataforma.