sql >> Databáze >  >> NoSQL >> MongoDB

Jak předat vnitřní dotaz v mongodb z javascriptu

TLDR;

Ekvivalentem mongoose by bylo nejprve spustit vnořený dotaz a předat výsledky agregaci.

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

Vysvětlení

Při provádění následujícího skriptu v mongo shellu se stane, že se nejprve odešle vnitřní dotaz (odlišný) a poté se výsledek předá vnějšímu dotazu (agregaci), který se pak odešle ke spuštění. To lze potvrdit zachycením trasování paketů. Na přiložených obrázcích můžeme vidět první odeslání dotazu (paket 9) přijatá odpověď (pakety 10 a 11) a odeslání agregačního dotazu (balíčky 12 a 13).



  1. Aktualizace slovníku v Mongodb

  2. Djongo ArrayField 'Item' není zapisovatelný

  3. Komprese v node.js

  4. MongoDB nebo CouchDB - vhodné pro výrobu?