不可能ではありませんが、MongoDBはこのシナリオには適していません。
その理由は、MongoDBがJOINを実行しないためです。複数のドキュメントにまたがるクエリが必要な場合は、ドキュメントごとに個別のクエリが必要です。
あなたの例では、各user
ドキュメントには、_id
の配列が含まれます 彼らの友達の。 「UserBの友達でもあるUserAの友達のすべての友達」を見つけることは、次のことを意味します。
- userAを見つけて、彼の友達を取得します-配列
- その配列内のすべてのユーザーを見つけて、友達の配列を取得します
- これらのアレイで、フレンドアレイにUserBを持つすべてのユーザーを検索します
これらはあなたが実行しなければならない3つのクエリです。これらの各クエリの間に、結果セットをアプリケーションに送信する必要があります。アプリケーションは、新しいクエリを作成してデータベースに送り返す必要があります。 2番目のクエリから返される結果セットは非常に大きくなる可能性があります。つまり、3番目のクエリには時間がかかる可能性があります。
tl; dr: 仕事に適したツールを使用してください。データがグラフベースであり、そのデータに対してグラフベースのクエリを実行する場合は、グラフデータベースを使用します。