我有BsonDocument
的列表。除其他属性外,每个文档还具有两个属性Name
和Type
。如果存在具有相同Name
和Type
的文档,我想更新所有属性,否则插入新文档。
我知道我必须使用IsUpsert
为真,并且由于我想更新所有我正在使用Replace
方法的属性
public async Task Save(IEnumerable<BsonDocument list)
{
var updateOptions = new UpdateOptions()
{
IsUpsert = true
};
var filterBuilder = Builders<BsonDocument>.Filter;
foreach (var doc in list)
{
var filter = filterBuilder.Eq<string>("Name", doc["Name"].AsString) & filterBuilder.Eq<string>("Type", doc["Type"].AsString);
await myCollection.ReplaceOneAsync(filter, doc, updateOptions);
}
}
上面的代码一步一步地进行操作。我想知道是否有一种方法可以批量进行?我注意到有UpdateManyAsync
,但我不知道语法。与该问题相关的SO帖子中的大多数帖子都有硬编码的过滤器值,在我的情况下不起作用