Personalmente, descubrí que en grandes bases de datos (1 TB y más), la respuesta aceptada es terriblemente lenta. La agregación es mucho más rápida. El ejemplo está abajo:
db.places.aggregate(
{ $group : {_id : "$extra_info.id", total : { $sum : 1 } } },
{ $match : { total : { $gte : 2 } } },
{ $sort : {total : -1} },
{ $limit : 5 }
);
Busca documentos cuyo extra_info.id
se usa dos veces o más, ordena los resultados en orden descendente del campo dado e imprime los primeros 5 valores del mismo.