find les résultats ne peuvent inclure que le contenu des documents eux-mêmes, tandis que aggregate peut projeter de nouvelles valeurs dérivées du contenu du document (comme la longueur d'un tableau). C'est pourquoi vous devez utiliser aggregate pour cela, même si vous n'obtenez qu'un seul document.
Post.aggregate([{$match: {postId: 5}}, {$project: {upvotes: {$size: '$upvotes'}}}])
La seule exception est le $meta
opérateur de projection pour projeter un $text score du résultat de la requête.