public async Task UpdateAISummaryAsync( Guid mediaId, MediaAISummary mediaAISummary, CancellationToken cancellationToken) { UpdateDefinition <Media> update = Builders <Media> .Update.Set(x => x.AISummary, mediaAISummary); await _mediaStoreContext.Medias.UpdateOneAsync( x => x.Id == mediaId, update, DefaultMongoOptions.Update, cancellationToken); }
public async Task UpdateMediaAISummaryAsync(CancellationToken cancellationToken) { List <MediaAI> allAI = await _context.MediaAI.AsQueryable().ToListAsync(cancellationToken); foreach (List <MediaAI> chunk in allAI.ChunkBy(500)) { List <UpdateOneModel <Media> > bulkUpdates = new(); foreach (MediaAI mediaAI in chunk) { MediaAISummary summary = BuildSummary(mediaAI); UpdateDefinition <Media> update = Builders <Media> .Update.Set(x => x.AISummary, summary); bulkUpdates.Add(new UpdateOneModel <Media>( Builders <Media> .Filter.Eq(x => x.Id, mediaAI.MediaId), update)); } await _context.Medias.BulkWriteAsync(bulkUpdates, null, cancellationToken); Console.WriteLine("Chunk updated..."); } }