J'ai personnellement constaté que sur les grandes bases de données (1 To et plus), la réponse acceptée est terriblement lente. L'agrégation est beaucoup plus rapide. Exemple ci-dessous :
db.places.aggregate(
{ $group : {_id : "$extra_info.id", total : { $sum : 1 } } },
{ $match : { total : { $gte : 2 } } },
{ $sort : {total : -1} },
{ $limit : 5 }
);
Il recherche les documents dont extra_info.id
est utilisé deux fois ou plus, trie les résultats dans l'ordre décroissant du champ donné et en imprime les 5 premières valeurs.