Se hai molti dati, continuerei con lo stesso approccio e aumenterei un contatore aggregato ogni volta che viene aggiunto un nuovo messaggio per un utente, utilizzando una raccolta simile a questa:
conta
{
userid: 123,
messages: 10
}
Sfortunatamente (o fortunatamente?) non ci sono trigger in MongoDB, quindi aumenteresti il contatore dalla logica dell'applicazione:
db.counts.update( { userid: 123 }, { $inc: { messages: 1 } } )
Questo ti darà le migliori prestazioni e probabilmente inseriresti anche un indice su userid
campo per ricerche veloci:
db.counts.ensureIndex( { userid: 1 } )