2011-12-05 22 views
2

私はASP.NET MVC 3、C#、およびMongoDBで作業しています。埋め込みドキュメントを含むモデルがありますが、埋め込みドキュメントごとに新しい_idを自動生成したいと考えています。埋め込みMongoDBドキュメントで新しい_id生成を強制します。

私はコードでこれを行うと

Model._id = ObjectId.GenerateNewId(); 

を設定するしかし、私はこれを行うことを心配してのMongoDB各埋め込み文書のための新しい_idを自動生成できるようにする必要はありませんでした場合、私はそれを愛するだろうことができます。

これらの埋め込みドキュメントを新しいコレクションに正規化する必要はありませんが、ここでは意味がありますが、ユニークなIDが必要です。

+0

埋め込まれたドキュメントにIDを付ける必要がある理由を詳しく説明できますか?私はそれが必要ではないと思う。 – mnemosyn

+0

ドキュメントが埋め込まれているにもかかわらずドキュメントを一意に識別する必要があるため、IDを取得したかったのです。これらのオブジェクトは個別に編集できますが、1つの親文書にのみ属します。 – MaseBase

答えて

2

_idのMongoDBが "自動生成"するのは、_idです。

ドキュメントを保存するとき、MongoDBは基本的に「スキーマ」や「埋め込み」ドキュメントや「サブドキュメントの配列」については何も知らない。型チェックやスキーマ検証はありません。したがって、埋め込みIDのインスタンス化を強制する方法はありません。

あなたの最善の策は、親クラスにまとめておくことです。これらの埋め込みドキュメントに特定のクラスが関連付けられている場合は、GenerateNewId()をそのコンストラクタに配置できます。

関連する問題