2012-03-30 16 views

答えて

8

この参照hiya:MongoDB normalization, foreign key and joining & &さらにhttp://shop.oreilly.com/product/0636920018391.do ===>のMongoDBは、サーバ側の外部キー関係をサポートしていませんhttp://books.google.com/books/about/Document_Design_for_MongoDB.html?id=TbIHkgEACAAJ&redir_esc=y

、 正規化も落胆です。できる限り親オブジェクト内に子オブジェクト を埋め込む必要があります。これによりパフォーマンスが向上し、 は完全に不要な外部キーにします。つまり、必ずしも というわけではないと言われています。そのため、DBRefという特殊な構成があり、別のコレクションの参照オブジェクト を参照することができます。これはそうではないかもしれません DBはオブジェクトを読み取るために追加のクエリを作成する必要があるので、 は外部キー参照の種類を許可します。

あなたの参照は手動で処理する必要があります。あなたのDBRefを参照している間だけ、 が参照されます。参照の対象がそれ以上存在しない場合は、 はすべての文書を参照して参照を検索し、 を削除しません。しかし、私は 本を削除した後にすべての参照を削除するには、コレクションごとに単一のクエリ が必要になると思います。クライアント、取引先、従業員と連絡先:

編集更新

http://levycarneiro.com/tag/mongodb/

levycarneiro.com/tag/mongodb [引用]だから、4つのコレクションを作成します。 db参照を介してそれらをすべて接続します。これは外部キーのように動作します。しかし、これはmongoDBのやり方ではありません。パフォーマンスは不利になる。

+1

興味深い。 「親オブジェクトに子オブジェクトを埋め込む」とはどういう意味ですか?これは、オーダー/ラインアイテムの関係がある場合、オーダードキュメントのプロパティとしてラインアイテムオブジェクトを追加することを意味しますか? – McGarnagle

+1

ヒヤ、確かに、私は思います。ここで興味深い記事 - http://levycarneiro.com/tag/mongodb/ [引用]したがって、4つのコレクション:クライアント、サプライヤ、従業員および連絡先を作成します。 db参照を介してそれらをすべて接続します。これは外部キーのように動作します。しかし、これはmongoDBのやり方ではありません。パフォーマンスは不利になる。 –

+0

偉大な、それは本当に有用なTatsです。実際、モンゴDBは、私が理解したように、オブジェクト間の参照を実装するのにそれほど効率的ではありません。 –

関連する問題