sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur man skickar en inre fråga i mongodb från javascript

TLDR;

Mongoose-motsvarigheten skulle vara att köra den kapslade frågan först och skicka resultaten till 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);
});

Förklaring

När man kör följande skript i mongo-skal, händer det att den inre frågan (distinkt) skickas först, och sedan skickas resultatet till den yttre frågan (aggregation) som sedan skickas in för exekvering. Detta kan bekräftas genom att fånga ett paketspår. I de bifogade bilderna kan vi se den första inlämningen av frågan (paket 9) svaret som togs emot (paket 10 och 11) och inlämning av aggregeringsfrågan a> (paket 12 och 13).



  1. MapReduce med MongoDB riktigt, riktigt långsam (30 timmar mot 20 minuter i MySQL för en motsvarande databas)

  2. Är det möjligt att casta i en MongoDB-Query?

  3. Gruppera och räkna i MongoDB

  4. Hur använder man PyMongo med Flask Blueprints?