Introducción
Curso MongoDB: Manejo de Pipelines de Agregación
Consultas Complejas con MongoDB Aggregation Framework
Configuración de MongoDB Atlas y Docker para Desarrolladores
Configuración de Docker para MongoDB en Visual Studio Code
Operaciones básicas
Filtrado y Ordenación de Datos en MongoDB Compass
Consulta de Precios con MongoDB Aggregation: Uso de Operador Group
Uso del operador Project en MongoDB
Operadores Count y Average en MongoDB Aggregation
Operador Set vs Project en MongoDB: Cuándo usar cada uno
Etapas de Aggregation Framework
Manipulación de Arrays con Unwind en MongoDB
Uso del operador out en MongoDB para persistencia de consultas
Coordenadas geospaciales con MongoDB: uso y beneficios
Filtrado y Agrupación de Datos en MongoDB con Pipeline
Uniones en MongoDB: Uso del operador $lookup
Operaciones avanzadas
Conteo de palabras en descripciones de Airbnb con JavaScript en MongoDB
Filtrado de documentos en MongoDB con operadores condicionales
Uso del Operador Accumulator en MongoDB Aggregation Framework
Agrupación con Bucket y Bucket Auto en MongoDB
Performance y optimización
Optimización con Aggregation Framework en MongoDB
Optimización de Consultas con Aggregation Framework en MongoDB
Próximos pasos
Consultas avanzadas con MongoDB Aggregation Framework
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
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.
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" }
])
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.then
: Si el documento cumple con la condición, se utiliza $$KEEP
para conservar dicho documento en las siguientes fases.else
: Si no cumple con la condición, se utiliza $$PRUNE
para excluirlo.$cond
para asegurar que MongoDB reconozca que se está formulando una condición.$count
permite saber cuántos documentos cumplen la condición, proporcionando una cifra concreta del filtrado.Adoptar el operador Redact debe venir acompañado de precauciones específicas:
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.
Aportes 4
Preguntas 0
use('sample_airbnb')
db.listingsAndReviews.aggregate([
{
$redact: {
$cond:{
if: { $gte: ["$review_scores.review_scores_rating", 95] },
then:"$$KEEP",
else: "$$PRUNE"
}
}
},
{
$count: "count"
}
])
solución al reto:
Utilizando $redact:
var db=db.getSiblingDB("sample_airbnb")
var resultado = db.listingsAndReviews.aggregate([
{
$redact: {
//condicion
$cond: {
if:{$gte:["$review_scores.review_scores_rating", 95]},
then: "$$KEEP",
else: "$$PRUNE"
}
}
},
{
$count:"cantidad_redact"
}
]
);
print(resultado)
Utilizando $match:
var db=db.getSiblingDB("sample_airbnb")
var resultado1 = db.listingsAndReviews.aggregate([
{
$match: {
"review_scores.review_scores_rating": { $gte: 95},
}
},
{
$count:"cantidad_match"
}
]
);
print(resultado1)
Ejecución y Resultado:
PS D:\Usuarios\Aggregations> mongosh --quiet ./playground-2.redact.mongodb.js
[ { cantidad_redact: 2287 } ]
[ { cantidad_match: 2287 } ]
Desventajas en el uso de $redact:
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?