find wyniki mogą zawierać tylko treść z samych dokumentów, podczas gdy aggregate może rzutować nowe wartości, które pochodzą z treści dokumentu (np. długość tablicy). Dlatego musisz użyć aggregate w tym celu, nawet jeśli otrzymujesz tylko jeden dokument.
Post.aggregate([{$match: {postId: 5}}, {$project: {upvotes: {$size: '$upvotes'}}}])
Pojedynczym wyjątkiem jest $meta
operator projekcji do rzutowania $text wynik zapytania.