Personalmente ho scoperto che su grandi database (1 TB e più) la risposta accettata è terribilmente lenta. L'aggregazione è molto più veloce. L'esempio è di seguito:
db.places.aggregate(
{ $group : {_id : "$extra_info.id", total : { $sum : 1 } } },
{ $match : { total : { $gte : 2 } } },
{ $sort : {total : -1} },
{ $limit : 5 }
);
Cerca i documenti il cui extra_info.id
viene utilizzato due o più volte, ordina i risultati in ordine decrescente di un determinato campo e ne stampa i primi 5 valori.