sql >> Database >  >> NoSQL >> MongoDB

optelling van twee kolommen in Aggregate Method

Gebruik $facet pijplijnfase om meerdere aggregatiepijplijnen binnen één enkele fase op dezelfde set invoerdocumenten te verwerken. In uw geval moet u de tellingen afzonderlijk optellen en vervolgens de twee resultaten samenvoegen en de uiteindelijke optellingen berekenen.

Dit kan worden aangetoond door de volgende pijplijn uit te voeren:

db.collection.aggregate([
    { "$match": { "userid": "123" } },
    {
        "$facet": {
            "groupByPage": [
                { "$unwind": "$page" },
                { 
                    "$group": {
                        "_id": "$page",
                        "count": { "$sum": 1 }
                    }
                }
            ],   
            "groupByNewPage": [
                { "$unwind": "$newpage" },
                { 
                    "$group": {
                        "_id": "$newpage",
                        "count": { "$sum": 1 }
                    }
                }
            ]
        }
    },
    { 
        "$project": {
            "pages": {
                "$concatArrays": ["$groupByPage", "$groupByNewPage"]
            }
        }
    },
    { "$unwind": "$pages" },
    { 
        "$group": {
            "_id": "$pages._id",
            "count": { "$sum": "$pages.count" }
        }
    },
    { "$sort": { "count": -1 } }
], function(error, data){
    if (error) {
        console.log(error);
    } else {
        console.log(data);
    }
)


  1. Sorteer de array in het document met MongoDB

  2. Flask-SocketIO opnieuw inschrijven

  3. Hoe JSON-objectstructuur naar puntnotatie te converteren?

  4. Ember-gegevens ingesloten objecten opgeslagen als afzonderlijke objecten