MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Come passare la query interna in mongodb da javascript

TLDR;

L'equivalente mangusta sarebbe eseguire prima la query nidificata e passare i risultati all'aggregazione.

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);
});

Spiegazione

Quando si esegue lo script seguente in mongo shell, ciò che accade è che la query interna (distinta) viene inviata per prima, quindi il risultato viene passato alla query esterna (aggregazione) che viene quindi inviata per l'esecuzione. Ciò può essere confermato acquisendo una traccia di pacchetto. Nelle immagini allegate, possiamo vedere il primo invio di query (pacchetto 9) la risposta ricevuta (pacchetti 10 e 11) e invio della query di aggregazione (pacchetti 12 e 13).