旧的.net驱动程序MongoCollection.Save的新选择?

时间:2015-05-21 22:12:41

标签: c# .net mongodb mongodb-.net-driver mongodb-csharp-2.0

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

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

1 个答案:

答案 0 :(得分:7)

您可以将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以查看它是插入还是更新。