旧的.net驱动程序的新选择

本文关键字:选择 新选择 net 驱动程序 旧的 | 更新日期: 2023-09-27 17:50:17

我有一些c#代码使用旧的1。MongoDB驱动程序的x版本,它提供了使用MongoCollection.Save()方法的通用保存方法。然而,在升级到2.0之后,这个方法似乎消失了,取而代之的是一个Update方法,它需要指定对象上所有更新的字段(这显然对泛型方法不好…)

我如何在2.0驱动程序中保持旧保存方法的功能(即只是传递一个对象来更新所有字段)?

旧的.net驱动程序的新选择

您可以使用ReplaceOneAsyncIsUpsert标志和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,看看它是插入还是更新。