3

私は新しいプロジェクトの MongoDB コレクション アーキテクチャを設計しています。MongoDB は初めてなので、1 対多の関係について質問がありました。

この例では、関係がデータセンター対サーバーであるとします。つまり、1 つのデータセンターには複数のサーバー (アプリでは数千) を配置でき、サーバーは 1 つのデータセンターにのみ属することができます。

Servers._datacenterを参照するのが最善でしょうDatacenter._idか? または、サーバー ID を格納するDatacenter.servers 配列ですか?

どのサーバー ID が関連付けられているかを参照するためにデータセンター ドキュメントに配列を含めることをお勧めする場合は、サーバー ID だけでサーバーが属しているデータセンターを見つける方法はありますか? (クイックwhere serverId in Datacenter.serversクエリのようなものです)すべてのデータセンターにクエリを実行する必要がなく、すべての Datacenter.servers 配列で ID を確認します

Servers ドキュメントに、それが属するデータセンターを参照する要素を含めることをお勧めする場合、Datacenter を照会し、関連付けられているすべてのサーバー ドキュメントを仮想 Documents.servers 配列などに返す方法はありますか?

各データセンターには非常に大量のサーバーが存在する可能性があるため、どの方法が最適かはよくわかりませんが、各データセンタードキュメント内にそのような大きな配列を持たない方がよいと思います...しかし次に、各サーバー ドキュメントで親データセンターが参照されるように設定すると、クエリがかなり難しくなります (または、そうでない場合は、まだ発見していない非常に簡単な方法があるかもしれません。Mongo は初めてだと言いました)。 )

私はこのドキュメントを読んでいて、参照方向をどちらかの方向に設定する方法を示しており、次のように述べています。

配列が変更可能で大きくなるのを避けるには、ブック ドキュメント内に出版社の参照を保存します。

そのため、サーバー ドキュメントでデータセンター ID を参照するのが最善だと思います。その場合、すべてのサーバー ドキュメントをデータセンター ドキュメント内の配列として返す方法はありますか? または、データセンターを照会してから、その Datacenter._id を持つすべてのサーバーを照会してから、マージされたオブジェクトを返す必要があります..

4

2 に答える 2