一般に、あなたは正しいです-行ごとに別のクエリを発行するため、populate() の使用を避けたいと考えています。これはサーバーへの完全な往復であることに注意してください。Mongo には結合の概念がまったくないため、入力を行うと、返されたセットの各行に対して追加のクエリを発行することになります。
これを回避する手法は、データを非正規化することです。リレーショナル データベースのような mongo データベースを設計しないでください。mongo docs には、これを行う方法に関する多くの情報があります。https://docs.mongodb.org/manual/core/data-model-design/ Mongo の設計で心に留めておくべき重要なことの 1 つは、無制限に拡大するサブドキュメントを作成したくないということです。mongo のスペース割り当てとページングの仕組みが原因で、これは深刻なパフォーマンスの問題を引き起こす可能性があるため、このような状況にある場合は正規化することをお勧めします。
もう 1 つの非常に一般的な手法は、サブドキュメントのキャッシュです。これは、「結合された」コレクションから部分的なデータを取得し、クエリしているコレクションにキャッシュする場所です。この場合、データが重複しているため、パフォーマンスのためにスペースを犠牲にしています。また、変更があるたびにデータを最新の状態に保つ必要があります。マングースでは、外部コレクションのモデルのポストセーブ フックとしてこれを行うのは簡単です。