MongoDB SELECT COUNT GROUPE PAR
Je joue avec MongoDB à essayer de comprendre comment faire un simple
SELECT province, COUNT(*) FROM contest GROUP BY province
Mais je n'arrive pas à le comprendre, à l'aide de la fonction d'agrégation. Je peux le faire à l'aide de certains vraiment étrange syntaxe du groupe
db.user.group({
"key": {
"province": true
},
"initial": {
"count": 0
},
"reduce": function(obj, prev) {
if (true != null) if (true instanceof Array) prev.count += true.length;
else prev.count++;
}
});
Mais est-il plus facile/moyen plus rapide à l'aide de la fonction d'agrégation?
- Ce lien peut vous aider codefari.com/2015/12/group-aggregation-in-mongodb.html
Vous devez vous connecter pour publier un commentaire.
Ce serait la façon la plus facile de le faire en utilisant
agrégation
:"errmsg" : "exception: A pipeline stage specification object must contain exactly one field.",
?{ $sort: { count: -1 } }
Si vous avez besoin de plusieurs colonnes de groupe par, suivre ce modèle. Ici, je suis à la conduite d'un nombre par
status
ettype
:J'ai besoin d'un peu plus de l'opération sur la base du résultat de la fonction d'agrégation. Enfin j'ai trouvé une solution pour l'ensemble de la fonction et le fonctionnement basé sur le résultat dans MongoDB. J'ai une collection
Request
avec le champrequest, source, status, requestDate
.Seul Champ de Groupe Par & Count:
Plusieurs Champs de Groupe Par & Count:
Plusieurs Champs de Groupe Par & le Comte avec Tri à l'aide du Champ:
Plusieurs Champs de Groupe Par & le Comte avec Tri à l'aide de Count:
De plus, si vous avez besoin de limiter le regroupement, vous pouvez utiliser:
Ce type de requête a fonctionné pour moi:
Voir http://docs.mongodb.org/manual/tutorial/aggregation-with-user-preference-data/
De départ dans MongoDB 3.4, vous pouvez utiliser le
$sortByCount
agrégation.https://docs.mongodb.com/manual/reference/operator/aggregation/sortByCount/
Par exemple:
$sortByCount
est en fait un "pseudo opérateur" comme plusieurs d'agrégation stade opérateurs introduit à partir de MongoDB 3.4. Tout ce qu'ils veulent faire est de développez dans leur agrégation étapes. Dans ce cas, un$group
avec$sum: 1
comme indiqué dans les réponses existantes et supplémentaires$sort
scène. Ils n'offrent aucun avantage autre que "taper moins de code", qui peut ou peut ne pas être le plus descriptif ( si vous êtes dans ce genre de chose ). À mon humble avis, distinctes$group
et$sort
étapes dans le code sont beaucoup plus descriptive et plus flexible.