我正在尝试使用 C# MongoDB 驱动程序来实现我们的 CRUD 接口。如果记录(与传入的模型具有相同的 id)不存在,我们的更新方法应该会抛出错误。
我知道 MongoCollection.Save 可以根据 id 更新文档,但它也会插入。我不想在任何情况下插入。
我还想通过指定每个成员来避免手动形成更新。
我也想避免两次调用 mongo 数据库。
- 检查文档是否存在。
- 如果存在则保存。
我正在寻找尽可能接近此的东西:
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,如何使用通常使用的默认值对其进行初始化)?
有什么黑客方法可以做到吗?
谢谢你。