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

Sådan sender du indre forespørgsel i mongodb fra javascript

TLDR;

Mongoose-ækvivalenten ville være at køre den indlejrede forespørgsel først og sende resultaterne til aggregeringen.

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

Forklaring

Når du udfører følgende script i mongo shell, sker det, at den indre forespørgsel (distinkt) sendes først, og derefter sendes resultatet til den ydre forespørgsel (aggregering), som derefter sendes til eksekvering. Dette kan bekræftes ved at fange et pakkespor. På de vedhæftede billeder kan vi se den første forespørgselsindsendelse (pakke 9) det modtagne svar (pakke 10 og 11) og indsendelse af aggregeringsforespørgsler (pakke 12 og 13).



  1. MongoDB:Pipeline-opslag med langsom ydeevne sammenlignet med grundlæggende opslag

  2. Hvad er $unwind-operatøren i MongoDB?

  3. Kan ikke køre mongo-container med replikasæt ved hjælp af docker-compose

  4. Ydeevneforøgelse ved at bruge bulkinserts vs almindelige indsatser i MongoDB