Dadas dos colecciones como:
users: name posts: title user_id¿Cómo puedo consultar a los usuarios con más de 5 publicaciones de manera eficiente ?
Puedo hacer una agregación con $lookup , pero eso lleva mucho tiempo para grandes conjuntos de datos.
Otra opción es mantener un "postCount" en users , pero me gustaría evitar tener que mantener eso.
Estoy usando Mongoose en Node.
Una consulta agregada eficiente que usa $lookup y una canalización $redact para filtrar sería la siguiente:
User.aggregate([ { "$lookup": { "from": "posts", "localField": "_id", "foreignField": "user_id", "as": "posts" } }, { "$redact": { "$cond": [ { "$gt": [ { "$size": "$posts" }, 5 ] }, "$$KEEP", "$$PRUNE" ] } } ]).exec(function(err, results){ if (err) throw err; console.log(results); })