我有一些使用旧 1.x 版本的 MongoDB 驱动程序的 C# 代码,它提供了使用该方法的通用保存MongoCollection.Save()
方法。然而,在升级到 2.0 之后,这个方法似乎消失了,取而代之的是一个 Update 方法,该方法需要指定对象上的所有更新字段(这显然不适合泛型方法......)
如何在 2.0 驱动程序中保留旧的 Save 方法的功能(即只传入一个对象以更新所有字段)?
我有一些使用旧 1.x 版本的 MongoDB 驱动程序的 C# 代码,它提供了使用该方法的通用保存MongoCollection.Save()
方法。然而,在升级到 2.0 之后,这个方法似乎消失了,取而代之的是一个 Update 方法,该方法需要指定对象上的所有更新字段(这显然不适合泛型方法......)
如何在 2.0 驱动程序中保留旧的 Save 方法的功能(即只传入一个对象以更新所有字段)?
您可以使用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
它是插入还是更新。