1

ユーザーコレクションに2つのオブジェクトがある場合:

{_id: 1, name: 'foo', workItems: []}
{_id: 2, name: 'bar', workItems: []}

各ユーザーのworkItems配列にworkItemコレクション内のオブジェクトへのリンクを追加するにはどうすればよいですか?

直接埋め込みについては理解していますが、一部のworkItemは複数のユーザーに割り当てられるため、データを複製したくありません。mongodb.orgを調べましたが、リンクの例が見つかりません。

4

2 に答える 2

3

データを複製した方がよい場合もあります。MongoDB は非リレーショナル データベースです。いくつかのやり方は、リレーショナル データベースでは悪い習慣ですが、非リレーショナル データベースでは意図されています。明らかな共通点がありますが、これは実際には同じ考え方ではありません。

私の職場では、本番環境で使用しており、読み取り操作でデータを複製する方が簡単かつ高速であることがわかりました。これこそまさに、MongoDB の強みです。もちろん、作業項目が変更されると、アプリケーションはそれが表示されるすべての場所を更新する必要があります.これは、書き込みが集中するシステムには適していない可能性があります.

もう 1 つのポイントは、ジョイントがエンジンによって処理されないため、少なくとも 2 番目の要求を発行する必要があることです。その後、アプリケーション側でジョイントを手動で行う必要があります。いずれにしても、ロジックをデータベースからクライアント アプリケーションに移動する必要があります。

于 2012-07-13T19:45:16.560 に答える
2

次のように DBRef を実行できます。

{ $ref : <name of collection where reference is>, $id : <_id of document>, $db : <optional argument for specifying the databse the document is at> }

したがって、ドキュメントは次のようになります。

{_id: 1, name: 'foo', workItems: {$ref: "blarg", $id: "1"}}
于 2012-07-13T15:16:59.277 に答える