Hello Ittipan,
The three methods to update documents of a collection are UpdateOneAsync, UpdateManyAsync and ReplaceOneAsync.
As you are aware if you wish to update specific fields you would need to use an UpdateDefinitionBuilder with multiple calls to Set each value you wish to update. Example code utilising multiple Set calls would look like this:
var FieldOne = "dynamicFieldA";
var FieldTwo = "dynamicFieldB";
var filters = Builders<BsonDocument>.Filter.Eq("_id", doc.Id);
var updateValues = Builders<BsonDocument>.Update
.Set(FieldOne, "a")
.Set(FieldTwo, "b");
await collection.UpdateOneAsync(filters, updateValues);
One alternative would be to load the document you wish to modify, followed by calling BsonDocument.Merge with overwriteExistingElements set to true in order to merge your changes. You would then use the one of the patterns you previously mentioned in order to persist the new document to the database.
Regards,
John Murphy