क्या आपने AddToSet को देखा है विधि, यदि आप इसे प्रतिस्थापन के बजाय अद्यतन फ़ंक्शन के संयोजन में उपयोग करते हैं तो इसे आपकी परमाणुता का बेहतर नियंत्रण रखना चाहिए।
var updateBuilder = Builders<Item>.Update.AddToSet(items => items.SubItems, new SubItem());
collection.UpdateOne(itemFilter, updateBuilder);
आपके मामले में ऐसा ही।
public Task Save(string itemId, SubItem subItem)
{
var itemFilter = Builders<Item>.Filter.Eq(v => v.Id, itemId);
var collection = _db.GetCollection<Item>("Items");
var updateBuilder = Builders<Item>.Update.AddToSet(items => items.SubItems, subItem);
collection.UpdateOneAsync(itemFilter, updateBuilder, new UpdateOptions() { IsUpsert = true }).Wait();
}