8

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

如何在 2.0 驱动程序中保留旧的 Save 方法的功能(即只传入一个对象以更新所有字段)?

4

1 回答 1

7

您可以使用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它是插入还是更新。

于 2015-05-21T22:17:53.850 回答