別のコレクション内のこれらのドキュメントへの参照の存在に基づいて、コレクションからドキュメントを取得しようとしています。
2 つのコレクションがあり、モデルが次のようにUsers
なっCourses
ているとします。
- ユーザー:
{_id, name}
- コース:
{_id, name, user_id}
注: これは単なる架空の例であり、実際の使用例ではありません。の名前フィールドで重複が問題ないと仮定しましょうCourse
。痩せましょうCourse as CourseRegistrations
。
ここでは、 の を保持して への参照を維持していUser
ます。また、文字列として保存されていることに注意してください。Course
user_id
_Id
User
ここで、特定のコース セットに登録されているすべてのユーザーを取得したいと考えています。
2つのクエリで実行できることを知っています。最初にクエリを実行し、一連のコースusers_id
のコレクションからフィールドを取得します。Course
次に、前のクエリで取得したユーザー IDUser
を使用してコレクションをクエリします。$in
しかし、ドキュメントの数が数万以上になると、これはうまくいかないかもしれません。
たった1回のクエリでこれを行うより良い方法はありますか?