MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Mongodb somme la taille des champs du tableau

Inclure le $group étape du pipeline de l'opérateur après le $project étape comme suit :

db.profil.aggregate([
   { "$match":{ "typ": "Organisation" } },
   { "$project": {
         "fooos": { "$size": "$foos" }
   } },
   { "$group": {
       "_id": null,
       "count": {
           "$sum": "$fooos"
       }
   } }
])

Cela regroupera tous les documents d'entrée du précédent $project étape et applique l'expression d'accumulateur $sum sur le fooos champ dans le groupe pour obtenir le total (en utilisant votre dernier exemple) :

Cela peut également être fait en contournant le $project pipeline comme :

db.profil.aggregate([
   { "$match": { "typ": "Organisation" } },
   { "$group": {
       "_id": null,
        "count": {
            "$sum": { "$size": "$foos" }
        }
    } }
])

Sortie

/* 0 */
{
    "result" : [ 
        {
            "_id" : null,
            "count" : 24
        }
    ],
    "ok" : 1
}