आप उन सभी संपत्तियों को देख सकते हैं जिन्हें आप अपडेट/सम्मिलित करना चाहते हैं और प्रत्येक संपत्ति के लिए ऐसा कर सकते हैं:
UpdateDefinition<Site> upsert = null;
if (properties.Any())
{
var firstprop = properties.First();
upsert = Builders<Site>.Update.Set(nameof(Site.Properties) + "." + firstprop.Key,
firstprop.Value);
foreach (var updateVal in properties.Skip(1))
{
upsert = upsert.Set(nameof(Site.Properties) + "." + updateVal.Key,
updateVal.Value);
}
collection.UpdateOne(r => r.Id == "YourId", upsert,
new UpdateOptions { IsUpsert = true });
}
उत्तर का पिछला संस्करण, कई अपडेट के साथ:
foreach (var updateVal in properties)
{
collection.UpdateOne(r => r.Id == "YourId",
Builders<Site>.Update.Set( nameof(Site.Properties)+ "." + updateVal.Key,
updateVal.Value),
new UpdateOptions { IsUpsert = true});
}
ध्यान दें, यह केवल नई कुंजी/मान जोड़ देगा या मौजूदा अपडेट करेगा, इससे कुछ भी नहीं हटेगा।