Estoy buscando una colección basada en algunas condiciones:
const orders = Order.find({ status: 'ACTIVE', isInFlux: true });Luego, mientras recorro cada uno de esos documentos, busco Pedidos nuevamente con:
Order.find({ userId: order.userId, status: 'ACTIVE', inFlux: true })Luego compruebo si hay varios pedidos pertenecientes a este usuario que cumplan con estas condiciones.
¿Hay alguna manera de modificar mi consulta para obtener estos documentos de una sola vez sin tener que recorrerlos todos o posiblemente una agregación que me ayude?
Parece que solo está intentando agrupar pedidos de forma condicional por ID de usuario. Esto probablemente hará el truco:
db.collection.aggregate([ { "$group": { "_id": "$user", "orders": { "$push": { "$cond": [ { $and: [ { "$eq": [ "$isInFlux", true ] }, { "$eq": [ "$status", "active" ] } ] }, "$$ROOT", "$$REMOVE" ] } } } } ])Zona de juegos: https://mongoplayground.net/p/c8MGdZsjMlJ