5

MongoDB について学習していて、質問があります。多対多または多対 1 の関係をどのように表現しますか? 標準の SQL DB では、次のように簡単です。

Parent Table has fields ID (primary key) and Name.
Child Table has fields ID (primary key) and Name
Parent-Child-Relationship Table has fields ID (primary key), ParentID and ChildID

insert into table Parent (ID, Name) values (1, "Bob");
insert into table Child (ID, Name) values (1, "Mahmoud");
insert into table Parent-Child-Relationship (ID, ParentID, ChildID) values (1,1,1);

しかし、MongoDB でこれを行う方法がわかりません。私はそれをできた:

db.parent.save({name: "Bob", children: ["Mahmoud"]});

しかし、どうすればマフムードの別の親 ("Mary" と言う) を作成できるのでしょうか??

明らかな何かが欠けていますか?助けてください。私は NoSQL テクノロジーのまったくの初心者です。

4

2 に答える 2

1

簡単に言えば、そうではありません。

10Gen が教えてくれる答えは、親である単一のドキュメントと、子を表すサブドキュメントを使用することです。

ただし、Mongo のサブドキュメント クエリは制限されており、処理が遅いため、そうしないでください。

誰もが最終的に行うことは、子に親 ID を保存し、アプリケーション レベルで複数のクエリ/結合を行うことです。

于 2013-09-03T01:00:53.553 に答える
1

以下のように別の親を作成することを妨げるものは何もありません。

db.parent.save({name: "Jane", children: ["Mahmoud"]})

しかし、私はあなたが要点を逃していると思います。ドキュメント指向のデータベースで行のような方法でデータを分割することは、通常は悪い考えです。すべてはアプリケーション ロジックに依存しますが、ファミリ データを反映したい場合は、たとえば次のような構造を試すことができます。

db.family.insert({mother: {name: "Jane", age: 27}, father: {name: "Bob", age: 29}, children: [{name: "Mahmoud", age: 2}], })
于 2013-09-03T01:03:47.880 に答える