我有一些C代码使用了MongoDB驱动程序的旧1.x版本,它提供了使用MongoCollection.Save()
方法的通用保存方法。但是,在升级到2.0之后,此方法似乎已不存在,并替换为一个更新方法,该方法要求指定对象上的所有已更新字段(这显然不适合通用方法…)
如何在2.0驱动程序中保留旧保存方法(即只传入一个对象以更新所有字段)的功能?
最佳答案
您可以将ReplaceOneAsync
与IsUpsert
标志和ID查询一起使用:
public async Task<ReplaceOneResult> Save(Hamster hamster)
{
var replaceOneResult = await collection.ReplaceOneAsync(
doc => doc.Id == hamster.Id,
hamster,
new UpdateOptions {IsUpsert = true});
return replaceOneResult;
}
您可以查看
ReplaceOneResult.MatchedCount
查看它是插入还是更新。