I want only items in list entityParameters will update in x.Params by Id , update all items of entityParameters if entityParameters.Id == x.Params.Id
List<Param> entityParameters
filter = Builders<MachineObj>.Filter.Where(x => x.MachineId == id);
update = Builders<MachineObj>.Update
.Set(x => x.Params, entityParameters);
List<ArrayFilterDefinition> arrayFilters = new();
int i = 0;
foreach (var item in entityParameters)
{
var updateItem = Builders<MachineObj>.Update.Set($"Params.$[elem{i}]", item);
arrayFilters.Add(new BsonDocumentArrayFilterDefinition<BsonDocument>(
new BsonDocument($"elem{i}.ParamId", item.ParamId)
));
update = Builders<MachineObj>.Update.Combine(update, updateItem);
i++;
}
updateOptions = new UpdateOptions
{
ArrayFilters = arrayFilters
};
await machinesDB.Machines.UpdateOneAsync(filter, update, updateOptions);