2

コードを介してSpringに言う方法はありますか?MongoDBにPersonなどのテーブル/コレクションがあります。別のテーブルと 1 対多の関係があるとどのように言えますか。これはSpringを通じてMongoDBで可能ですか?

4

2 に答える 2

3

MongoDB は、他のデータベースやコレクションと「関係」を持つことができます。これらは手動参照および DBRef と呼ばれます。データベース参照については、ドキュメントを参照してください。ただし、単一のコレクションを使用する場合と比較して、ほとんどの場合パフォーマンスが低下するため、これらの使用には注意が必要です。アプリケーションまたはドライバーのいずれかで、参照を解決するために、元のコレクションで 1 回、もう 1 つのコレクションで 1 回、データに対して 2 回クエリを実行する必要があります。

DBRef を使用して MongoDB で結合をエミュレートしようとするのは、リレーショナル モデルから来ている人にとってよくある間違いです。あなたが与える例では、次のように、埋め込みを使用して単一のコレクションで1対多の関係をより適切にモデル化する可​​能性があります。

{
    "_id" : ObjectId(),
    "Name" : "Bob",
    "Cars" : {
        "CarName1" : "FirstCar",
        "CarName2" : "SecondCar"
    }
}

詳細については、スキーマ設計に関するドキュメントをご覧ください。

于 2012-08-05T22:54:53.043 に答える
2

MongoDb は、複数のコレクション間の関係をサポートしていません。データベースの sql アプローチとは異なります。No-sql は、スキーマ設計自体によって維持される論理関係をサポートします。その基本的な目標は、ドキュメントの一部への依存を減らし、プロセスを高速化することです。デモの例については、mongodb-useful-basics にアクセスしてください。

于 2015-08-06T17:15:40.377 に答える