4

RDMBS のバックグラウンドから来て、特にスキーマのない MongoDB 環境で作業する場合、結合のような考えを考えずにはいられません。

DBRef は、参照しているオブジェクトのタイプがわかっている場合にのみ役立つというブログを読みました。

これはなぜですか?確かにそれ以上の用途があります。

ユーザー コレクションと雇用者コレクションがあるとします。多くのユーザーが同じ雇用主を参照できます。私にとって、これは DBRef の完璧な使い方です。しかし、これは私がそのブログで読んだことと矛盾しています。

もちろん、雇用主を各ユーザー コレクションに埋め込むこともできますが、雇用主が変わるとどうなるでしょうか。雇用主が住所や電話番号などを変更したのかもしれません。雇用者が各ユーザーに埋め込まれている場合、すべてのユーザーの埋め込みドキュメントを更新する必要があります。

それは効率的ではありません。それともできますか?

4

1 に答える 1

10

DBRefs は、コレクション名とオブジェクト ID を含むデータ構造です。コレクションの名前がわかっている場合 (たとえば、employer など)、DBRef は必要ありません。雇用主のオブジェクト ID をユーザー コレクションに保存するだけです。コレクション名が占めるスペースを節約できます。

コレクション名が変更される可能性がある場合は、DBRef を使用します。たとえば、コメント コレクションがあるとします。ブログ投稿と本のページ (2 つの異なるコレクション) にコメントを保存するために使用します。投稿またはページへの参照をコメントに保存する場合は、データベース参照を使用する必要があります。

于 2011-08-08T07:09:18.927 に答える