find
los resultados solo pueden incluir contenido de los propios documentos, mientras que aggregate
puede proyectar nuevos valores que se derivan del contenido del documento (como la longitud de una matriz). Es por eso que necesitas usar aggregate
para esto, aunque solo obtenga un documento.
Post.aggregate([{$match: {postId: 5}}, {$project: {upvotes: {$size: '$upvotes'}}}])
La única excepción es $meta
operador de proyección para proyectar un $text
puntuación del resultado de la consulta.