コードを介してSpringに言う方法はありますか?MongoDBにPersonなどのテーブル/コレクションがあります。別のテーブルと 1 対多の関係があるとどのように言えますか。これはSpringを通じてMongoDBで可能ですか?
2 に答える
MongoDB は、他のデータベースやコレクションと「関係」を持つことができます。これらは手動参照および DBRef と呼ばれます。データベース参照については、ドキュメントを参照してください。ただし、単一のコレクションを使用する場合と比較して、ほとんどの場合パフォーマンスが低下するため、これらの使用には注意が必要です。アプリケーションまたはドライバーのいずれかで、参照を解決するために、元のコレクションで 1 回、もう 1 つのコレクションで 1 回、データに対して 2 回クエリを実行する必要があります。
DBRef を使用して MongoDB で結合をエミュレートしようとするのは、リレーショナル モデルから来ている人にとってよくある間違いです。あなたが与える例では、次のように、埋め込みを使用して単一のコレクションで1対多の関係をより適切にモデル化する可能性があります。
{
"_id" : ObjectId(),
"Name" : "Bob",
"Cars" : {
"CarName1" : "FirstCar",
"CarName2" : "SecondCar"
}
}
詳細については、スキーマ設計に関するドキュメントをご覧ください。
MongoDb は、複数のコレクション間の関係をサポートしていません。データベースの sql アプローチとは異なります。No-sql は、スキーマ設計自体によって維持される論理関係をサポートします。その基本的な目標は、ドキュメントの一部への依存を減らし、プロセスを高速化することです。デモの例については、mongodb-useful-basics にアクセスしてください。