Pipeline Builder or Conditional Update

I have a StackOverflow question here (c# - MongoDB - Cannot create field 'ChildProperty' in element {ParentProperty: is null} - Stack Overflow) that gives a bit more detail. But, basically, I am trying to dynamically partially update a document without making a call to get the document first. This is fine for shallow properties like Guids, ints, etc, and even objects as I can just overwrite what is currently there via Builders<BsonDocument>.Update.Set("PropertyName", value). I then have a list of these and do Builders<BsonDocument>.Update.Combine(updates) then await collection.FindOneAndUpdateAsync(filter, combinedUpdates).

But, what if I wanted to partially update a child’s property. In the StackOverflow example, I mention trying Builders<BsonDocument>.Update.Set("Address.Street", value). This works as long as the User’s Address property is not null. If it is, I get an error. So, I need to conditionally update. If Address is null, set it to an empty object, then allow the following update builders to set the Address’ properties. Otherwise, if address is not null, just allow the update builders to set the Address’ properties.

The answer to the StackOverflow question works if the properties are not dynamic. But, in my case, they are dynamic. I could want to update the user’s name (which is shallow), then update the user’s address’ street, then update the user’s favorite food (which is another object). I would like to then combine all of these together like the shallow update and send this in one call to the database.

Am I thinking about this incorrectly, is there a better way to do this? Is this just a limitation and I can only do shallow partial updates dynamically?