Uso del operador Redact para filtrar documentos en MongoDB

Clase 16 de 21Curso 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" }
])
  1. 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.
  2. Instrucción then: Si el documento cumple con la condición, se utiliza $$KEEP para conservar dicho documento en las siguientes fases.
  3. 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.