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.