我有一个由计时器触发的 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; …Run Code Online (Sandbox Code Playgroud)