Se você tiver muitos dados, eu continuaria com a mesma abordagem e incrementaria um contador agregado sempre que uma nova mensagem fosse adicionada para um usuário, usando uma coleção mais ou menos assim:
contagens
{
userid: 123,
messages: 10
}
Infelizmente (ou felizmente?) não há gatilhos no MongoDB, então você incrementaria o contador da lógica do seu aplicativo:
db.counts.update( { userid: 123 }, { $inc: { messages: 1 } } )
Isso lhe dará o melhor desempenho, e você provavelmente também colocaria um índice no
userid
campo para pesquisas rápidas:db.counts.ensureIndex( { userid: 1 } )