У меня есть функция Azure, запускаемая таймером, в котором я хочу обновить документы в CosmosDB.Теперь я использую функцию UpdateOneAsync
с опцией IsUpsert = true
, чтобы выполнить обновление (или вставить, если документ не существует).
Однако я выполняю операцию обновления внутри цикла foreach, поэтому операция обновления выполняется для каждого элемента.Как я могу выполнить массовое обновление (upsert), выполнив всего одну операцию после завершения цикла foreach?
Вот мой код прямо сейчас:
foreach (var group in GetGroups(date, time, hour))
{
dic = new MyDictionary<string>();
//... some operations
List<BsonElement> documents = new List<BsonElement>();
documents.Add(new BsonElement("$inc", new BsonDocument(dic)));
documents.Add(new BsonElement("$set", new BsonDocument(new Dictionary<string, string>() { { "c", key }, { "d", date } })));
var doc = clicksDoc.UpdateOneAsync(t => t["_id"] == "c-" + key + "-" + date, new BsonDocument(documents), new UpdateOptions() { IsUpsert = true }).Result;
}
Вместо этого я бы хотелвыполнить только одно обновление после цикла.Как я могу это сделать?