2014-08-29 3 views
0

En fait, je suis confronté à un problème avec mongoDB.Compter et grouper avec mongo db

Je dois montrer quelques statistiques: - Un traitement est une information qui contient une date, l'utilisateur qui a traité, une liste d'anomalies

Pouvez-vous me aider à la demande d'obtenir:

"Le nombre d'anomalies par les utilisateurs?"

Merci pour tous: D

Répondre

0
db.treatment.aggregate(
    { 
     $group : {_id : "$anomalies", totalUser : { $sum : 1 }} 
    } 
); 

Note: changer votre collection et le document key name si je mets mal.

Source: http://www.mkyong.com/mongodb/mongodb-aggregate-and-group-example/

+0

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

+0

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'. –

+0

J essayant réellement de le faire fonctionner. Mais j'ai besoin de temps je pense /: – mfrachet

0

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 }