C# MongoDB ドライバーを使用して CRUD インターフェイスを実装しようとしています。update メソッドは、(渡されたモデルと同じ ID を持つ) レコードが存在しない場合、エラーをスローすることになっています。
MongoCollection.Save が ID に基づいてドキュメントを更新できることは知っていますが、挿入も行います。どうしても入れたくない。
また、すべてのメンバーを指定して手動で更新を作成することも避けたいと考えています。
また、mongo データベースを 2 回呼び出すことも避けたいと思います。
- ドキュメントが存在するかどうかを確認します。
- 存在する場合は保存します。
私はこれにできるだけ近いものを探しています:
var result = myCollection.Update(myModel, WriteConcern.Acknowledged);
//result will have an error if a document with Id==myModel.Id did not pre-exist
また、次のようなものにも満足しています。
var query = Query<MyModel>.EQ(m => m.Id, myModel.Id);
var update = Update<MyModel>.SetDocument(myModel);
var result = myCollection.Update(query, update, WriteConcern.Acknowledged);
これを行う「適切な」方法はありますか?そうでない場合、Mongo DB で使用する「CRUD my models」に代わる、気が遠くなるような代替パターンは何ですか?
これを実現するために MongoInsertOptions に設定できるものはありますか (ところで、独自の MongoInsertOptions を作成する場合、通常使用されるデフォルトでどのように初期化しますか)?
それを行うハック方法はありますか?
ありがとうございました。