Mongodb somme de la taille des champs du tableau
j'ai donc un tas de documents simples comme
{
"foos": [
ObjectId("5105862f2b5e30877c685c58"),
ObjectId("5105862f2b5e30877c685c57"),
ObjectId("5105862f2b5e30877c685c56"),
],
"typ": "Organisation",
}
et je veux trouver la taille globale des associés foos
à des documents de type "Organisation"
donc, j'ai cette requête d'agrégation
db.profil.aggregate(
[
{
$match:{
"typ":"Organisation"
}
},
{
$project: {
fooos: { $size: "$foos" }
}
}
]
)
renvoie le nombre de tous les foos pour chaque document
comme :
{ "_id" : ObjectId("50e577602b5e05e74b38a6c8"), "foooos" : 1 }
{ "_id" : ObjectId("51922170975a09f363e3eef5"), "foooos" : 3 }
{ "_id" : ObjectId("51922170975a09f363e3eef8"), "foooos" : 2 }
{ "_id" : ObjectId("5175441d975ae346a3a8dff2"), "foooos" : 0 }
{ "_id" : ObjectId("5192216f975a09f363e3eee9"), "foooos" : 2 }
{ "_id" : ObjectId("5192216f975a09f363e3eeeb"), "foooos" : 3 }
{ "_id" : ObjectId("5192216f975a09f363e3eee4"), "foooos" : 2 }
{ "_id" : ObjectId("5192216f975a09f363e3eee6"), "foooos" : 2 }
{ "_id" : ObjectId("5192216f975a09f363e3eedb"), "foooos" : 2 }
{ "_id" : ObjectId("51922174975a09f363e3ef4a"), "foooos" : 1 }
{ "_id" : ObjectId("5192216f975a09f363e3eee1"), "foooos" : 1 }
{ "_id" : ObjectId("5192216e975a09f363e3eed7"), "foooos" : 2 }
{ "_id" : ObjectId("5192216f975a09f363e3eeee"), "foooos" : 3 }
est-il une requête qui retourne un résumé de compter pour foos de tous les documents ?
j'ai joué autour avec $somme, mais ne sais pas comment la combiner avec ma requête, je seulement obtenir des erreurs de syntaxe, ce serait cool de savoir si cela est possible
OriginalL'auteur john Smith | 2015-05-14
Vous devez vous connecter pour publier un commentaire.
Inclure la
$group
opérateur de pipeline de la scène après la$
étape comme suit:Cela permettra de regrouper tous les documents d'entrée de la précédente
$
scène et s'applique à l'accumulateur d'expression$somme
sur lefooos
domaine au sein du groupe afin d'obtenir le montant total (à l'aide de votre dernier exemple):Cela peut aussi être fait par le passage par le
$
pipeline:Sortie
_id
champ n'est pas nécessaire.Merci de noter que.
wow, merci beaucoup cela fonctionne comme un charme ! j'avais besoin d'inclure
"foos":{$ne:null}
$pour le match de la requête pour mettre à travaillerNice one! Content que tout s'est bien passé pour vous à la fin
OriginalL'auteur chridam
Je sais que c'est une vieille question, mais vous pouvez contourner projet tout à fait, si vous voulez, comment à ce sujet?
La sortie reste le même et il semble qu'il est (un peu) plus rapide.
OriginalL'auteur The Hero of Canton