0

mongodb の仕組みを理解しようとしていますが、いくつか質問があります。

削除、挿入、更新、および選択の方法は理解していますが、「ベスト プラクティスの質問」がいくつかあります。

1) インデックスを作成する必要がありましたか、それとも自動生成された _id を使用できますか?

2) たとえば、2 種類のオブジェクト (車とドライバー) が nn 関係にあるとします。3 つのコレクションを取得する必要があります (車、ドライバー、コレクション ウィッチが他の 2 つをリンクします) ?

3) オブジェクトを再構築するには、json を JSON オブジェクトで解析する必要がありますか?

ご協力いただきありがとうございます

4

1 に答える 1

2

3 つの良い質問です。それぞれ順番にお答えします。

1) インデックスを作成する必要がありましたか、それとも自動生成された _id を使用できますか?

_id必ずインデックスを試して (再) 使用する必要があります。これは通常、ドメイン オブジェクト内の一意のフィールド (または RDMS で言えば主キー) の 1 つを移動して、_idフィールドにマップすることを意味します。シャーディングする場合は、フィールドが大きくなりすぎないように注意する必要がありますが、それは別の質問に答える必要があります。

2) たとえば、2 種類のオブジェクト (車とドライバー) が nn 関係にあるとします。3 つのコレクションを取得する必要があります (車、ドライバー、コレクション ウィッチが他の 2 つをリンクします) ?

いいえ!必要なコレクションは 2 つだけです。1 つは車用、もう 1 つはドライバー用です。「結合テーブル」はDBRefsとして各コレクションに取り込まれます。

各車のドキュメントには、DBRef またはドキュメント参照の配列が含まれます。これらの参照には、データベース名 (オプション)、コレクション名、および_idドライバー ドキュメントが含まれます。ドライバー ドキュメントには、運転された各車と同様の DBRef のセットがあります。

ほとんどのドライバーは、これらのドキュメント参照の作成と参照解除をサポートしています。

3) オブジェクトを再構築するには、json を JSON オブジェクトで解析する必要がありますか?

MongoDB lingua franca は実際には BSON です。BSON は、JSON の型付けされた、バイナリーで、簡単に解析できるバージョンと考えることができます。ほとんどのドライバーには、JSON から BSON の表現への変換、およびその逆の変換機能があります。Java で開発している場合、10gen ドライバーのユーティリティ クラスはJSONです。非同期ドライバーの場合、これはJsonと呼ばれます。

そうは言っても、データがすでに JSON でない限り、データを JSON に変換して BSON に変換したり、元に戻したりすることはありません。代わりに、選択した言語の ODM (Object-Document-Mapper) を探すか、ドメイン オブジェクトをドライバの BSON 表現に直接変換します。

HTH- ロブ。

于 2013-04-28T13:56:48.240 に答える