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

MongoDB Aggregate &Grouping Issue i MeteorJS

Hvis du bruger meteor hacks-aggregatet pakke til at implementere en .aggregate() kommando på din samling, så returnerer den kun lige et array som svar. Så du skal arbejde det til en form for en offentliggjort samling:

Meteor.publish("completedLB,function() {
    var self = this;

    var results = userCompleted.aggregate([
        { "$match": { "progressState": true } },
        { "$group": {
            "_id": "$userId",
             "progressState": { "$first": "$progressState" },
             "count": { "$sum": 1 }
        }},
        { "$sort": { "_id": 1 } }
    ]);

    _.each(results,function(result) {
        self.added("client_collection_name",Random.id(), {
            userId: result._id,
            progressState: result.progressState,
            count: result.count
        });
    });
    self.ready();
});

Eller for at inkludere false tæller som dit foreslåede output antyder sig selv:

        { "$group": {
            "_id": "$userId",
             "progressState": { "$first": true },
             "count": { "$sum": { "$cond": ["$progressState", 1,0] }
        }},
        { "$sort": { "_id": 1 } }

Som pipeline med en $cond evaluering for at konvertere til numerisk.

Hvor du i den grundlæggende aggregering bare "totaler" de matchede resultater og selvfølgelig $sort refererer til et felt til stede i outputtet, som i dit eksempel ville være "userId"-værdien nu i _id nøgle fra aggregering, men kunne også "tælles" til ordre efter det samlede antal, hvis det ønskes.

Den del producerede fejlen som $sort er et nuværende felt og ikke en feltværdi med $ notation.

Men selvfølgelig skal du erstatte det faktiske _id for at udgive som en klient tilgængelig samling med noget forventet. Så tilfældig id-generering fungerer her, ligesom inklusion af de andre felter.

For lidt flere detaljer, og også en alternativ til "hacks"-pakken, der bare fungerer med en vanille-installation, er der også dette svar af mig selv, der har en komplet liste som eksempel.




  1. Dvalemodulfejl OGM + MongoDB og Wildfly 10

  2. Sådan læser du flere sæt gemt på Redis ved hjælp af en kommando eller et LUA-script

  3. Godkendelse mislykkedes fejl ved angivelse af database

  4. Mongoose befolker vs objektnesting