sql >> Base de Datos >  >> NoSQL >> MongoDB

Cómo pasar una consulta interna en mongodb desde javascript

TLDR;

El equivalente de mangosta sería ejecutar primero la consulta anidada y pasar los resultados a la agregación.

groups.distinct("p", {"enable": true}).exec().then(matchingGroups => {
    return users.aggregate([
        {$match: {"id": {$in: ["0", "1", "2"]}, p: {$in: matchingGroups}}},
        {$group:{_id:"$v", number:{$sum:1 }}}
    ]).exec();
}).then(aggregationResult => {
    console.log(aggregationResult);
});

Explicación

Al ejecutar el siguiente script en mongo Shell, lo que sucede es que la consulta interna (distinta) se envía primero y luego el resultado se pasa a la consulta externa (agregación) que luego se envía para su ejecución. Esto se puede confirmar capturando un seguimiento de paquete. En las imágenes adjuntas, podemos ver el primer envío de consulta (paquete 9) la respuesta recibida (paquetes 10 y 11), y el envío de consulta de agregación (paquetes 12 y 13).