Donc, si votre collection avait les documents suivants:
> db.treatments.find()
{ "_id" : 1, "date" : ISODate("2014-08-29T15:44:45.843Z"), "user" : "A", "anomalies" : [ "a", "b", "c" ] }
{ "_id" : 2, "date" : ISODate("2014-08-29T15:45:01.782Z"), "user" : "A", "anomalies" : [ "e", "f", "g" ] }
{ "_id" : 3, "date" : ISODate("2014-08-29T15:45:34.889Z"), "user" : "B", "anomalies" : [ "a", "b", "c", "e", "f", "g" ] }
{ "_id" : 4, "date" : ISODate("2014-08-29T15:48:01.860Z"), "user" : "B", "anomalies" : [ "a", "b", "c", "e", "f", "g" ] }
{ "_id" : 5, "date" : ISODate("2014-08-29T15:48:28.937Z"), "user" : "A", "anomalies" : [ "x", "y", "z" ] }
Vous pouvez utiliser la phase de groupes de $ pour résumer $ la taille $ du tableau des anomalies
> db.treatments.aggregate([ { $group: { _id: "$user", allAnomalies: { $sum: { $size: "$anomalies" } } } } ])
{ "_id" : "B", "allAnomalies" : 12 }
{ "_id" : "A", "allAnomalies" : 9 }
Cela fonctionne super pour compter les utilisateurs pour les anomalies mais ce dont j'ai besoin est d'afficher: utilisateur 1 => 50 anomalies, utilisateur 2 => 60 anomalies, utilisateur 3 => 10 anomalies – mfrachet
Je vous ai donné une requête pour le groupe par anomalie s. Si vous voulez une requête pour un groupe par utilisateur, essayez avec '$ user' au lieu de' $ anomalies'. –
J essayant réellement de le faire fonctionner. Mais j'ai besoin de temps je pense /: – mfrachet