Я пытаюсь использовать драйвер C # для mongodb, чтобы исправить некоторые данные.Мне нужно обновить некоторые свойства документа, а также свойства вложенных документов, хранящихся в массиве.
У меня сейчас есть рабочее решение, но оно кажется неэффективным.Есть ли способ динамического обновления значений без необходимости запуска отдельного оператора обновления для каждого элемента в массиве?
var jobs = db.GetCollection<JobDocument>("jobs");
var filter = Builders<JobDocument>.Filter.Empty;
var result = jobs.Find(filter).ToList();
foreach (var job in result)
{
var updateFilter = Builders<JobDocument>.Filter.Eq(j => j._id, job._id);
var wrongDate = job.dueDate;
var fixedDate = FixDate(wrongDate);
var update = Builders<JobDocument>.Update.Set(j => j.dueDate, fixedDate);
var updateResult = await jobs.UpdateOneAsync(updateFilter, update);
//Update each work order
foreach(var wo in job.workOrders)
{
var woElemFilter = Builders<JobDocument>.Filter.ElemMatch(x => x.workOrders, f => f._id == wo._id);
var woFilter = Builders<JobDocument>.Filter.And(updateFilter, woElemFilter);
var wrongWoDueDate = wo.dueDate;
var fixedWoDueDate = FixDate(wrongWoDueDate);
var woUpdate = Builders<JobDocument>.Update.Set(j => j.workOrders[-1].dueDate, fixedWoDueDate);
var woUpdateResult = await jobs.UpdateOneAsync(woFilter, woUpdate);
}