MongoDB の関係
MongoDB 関係は、複数のドキュメント間の論理的な相互接続を表します。
文書間の関係は、埋め込みと引用によって確立できます。
MongoDB の関係は次のとおりです:
1:1 (1 対 1)
1: N (1 対多)
N: 1 (多対 1)
N : N(多対多)
次に、ユーザーとユーザーアドレスの関係を考えてみましょう。
ユーザーは複数のアドレスを持つことができるため、1 対多の関係になります。
以下は user ドキュメントの単純な構造です:
{ "_id":ObjectId("52ffc33cd85242f436000001"), "name": "Tom Hanks", "contact": "987654321", "dob": "01-01-1991" }
以下は address ドキュメントの単純な構造です:
{ "_id":ObjectId("52ffc4a5d85242602e000000"), "building": "22 A, Indiana Apt", "pincode": 123456, "city": "Los Angeles", "state": "California" }
埋め込まれた関係
embedding メソッドを使用すると、ユーザー アドレスを埋め込むことができますユーザーのドキュメントに:
"_id":ObjectId("52ffc33cd85242f436000001"), "contact": "987654321", "dob": "01-01-1991", "name": "Tom Benzamin", "address": [ { "building": "22 A, Indiana Apt", "pincode": 123456, "city": "Los Angeles", "state": "California" }, { "building": "170 A, Acropolis Apt", "pincode": 456789, "city": "Chicago", "state": "Illinois" }] }
上記のデータは 1 つのドキュメントに保存されるため、データの取得と管理が容易になります。 次のようにユーザーのアドレスをクエリできます:
>db.users.findOne({"name":"Tom Benzamin"},{"address":1})
注: 上記のクエリでは、db と users はデータベースとコレクションを表します。
このデータ構造の欠点は、ユーザーとユーザー アドレスが増加し続け、データ量が増加し続けると、読み取りおよび書き込みのパフォーマンスに影響することです。
参照関係
参照関係は、データベースを設計する際によく使われる手法で、ユーザーデータ文書とユーザーアドレスデータ文書を分離し、文書のidフィールドを参照することで関係を確立します。
{ "_id":ObjectId("52ffc33cd85242f436000001"), "contact": "987654321", "dob": "01-01-1991", "name": "Tom Benzamin", "address_ids": [ ObjectId("52ffc4a5d85242602e000000"), ObjectId("52ffc4a5d85242602e000001") ] }
上記の例では、ユーザー ドキュメントの address_ids フィールドには、ユーザーのアドレスの ObjectId 配列が含まれています。
これらのユーザー アドレスのオブジェクト ID (ObjectId) を読み取ることで、ユーザーの詳細なアドレス情報を取得できます。
このメソッドには 2 つのクエリが必要です。1 回目はユーザーのアドレスのオブジェクト ID (ObjectId) をクエリし、2 回目はクエリ ID を通じてユーザーの詳細なアドレス情報を取得します。
りー