Si tiene muchos datos, seguiría con el mismo enfoque e incrementaría un contador agregado cada vez que se agregue un nuevo mensaje para un usuario, usando una colección como esta:
cuenta
{
userid: 123,
messages: 10
}
Desafortunadamente (¿o afortunadamente?) no hay activadores en MongoDB, por lo que incrementaría el contador desde la lógica de su aplicación:
db.counts.update( { userid: 123 }, { $inc: { messages: 1 } } )
Esto le dará el mejor rendimiento, y probablemente también coloque un índice en el userid
campo para búsquedas rápidas:
db.counts.ensureIndex( { userid: 1 } )