2012-06-14 4 views
0

J'ai, disons 100 lignes. Dans chaque collection, il y a un champ 'id'. Disons que sur les 100 lignes, 20 lignes ont un 'id' de 10, 30 lignes ont un 'id' de 11 et 50 lignes ont un 'id' de 12. Ma requête devrait retourner: 10 - 20 (count 11 - 30 (comptage) 12 - 50 (comptage).requête mongodb: comment obtenir des entrées uniques

Comment écrire cette requête?

Répondre

2

Si votre collection est appelée "foo", ce qui suit fonctionnera.

> db.foo.group({ 
    key: {id: true}, 
    initial: {count: 0}, 
    reduce: function(doc, aggregator) { 
    aggregator.count += 1; 
    } 
}) 

Il produira des résultats comme suit:

[ 
{ 
    "id" : 10, 
    "count" : 20 
}, 
{ 
    "id" : 11, 
    "count" : 30 
}, 
{ 
    "id" : 12, 
    "count" : 50 
} 
] 

Il y a plus de détails sur le groupe(), et quelques exemples, ici: http://www.mongodb.org/display/DOCS/Aggregation

Le nouveau cadre d'agrégation est sensiblement plus sophistiqué. Vous pouvez le découvrir ici: http://docs.mongodb.org/manual/applications/aggregation/

+0

Salut Ian Daniel, Cela fonctionne pour moi merci beaucoup. J'ai encore une chose à faire, c'est-à-dire que j'ai besoin de deux champs supplémentaires pour obtenir la même collection. Par exemple, j'ai une collection appelée userStoredInfo dans laquelle j'ai "userId, files, fielssize, infos" comme champs. Maintenant, je veux faire est, obtenir le nombre d'infos, total non: de fichiers, taille totale du fichier basé sur userId .. Toute suggestion ou aide sera appréciée ... Merci ... –

Questions connexes