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- ロブ。