У меня есть следующий код для запроса (производительность составляет около 3,5 секунд с несколькими документами) несколько документов и объединение их в один результат.Можно ли превратить следующий код в запрос соединения?Я пытался использовать агрегат, поиск и объединение, но не могу найти способ объединить все вместе. Я не понимаю, с чего начать, даже.Любая помощь и рекомендации очень ценятся.Я хочу повысить производительность запроса.
List<Overview> overview = null;
//Getting areas which matches the given City
var areasInCity = await Context.Areas.Find(a => a.City.Equals(detail.City)).Project(i => i.Id).ToListAsync();
if (areasInCity.HasAny())
{
overview = new List<Overview>();
//Finding locations which belongs to areas we found above
var relatedLocations =
await Context.Locations.Find(
l => areasInCity.Contains(l.AreaId) && l.Status.Equals(Constants.InternalStatus.Active)).ToListAsync();
if (relatedLocations.HasAny())
{
foreach (var location in relatedLocations)
{
//Find campaigns and businesses which belongs to each location
var campaign = await Context.Campaigns.Find(c => c.Id.Equals(location.CampaignId)).FirstOrDefaultAsync();
var business = await Context.Businesses.Find(b => b.Id.Equals(location.BusinessId)).FirstOrDefaultAsync();
var overviewItem = new LocationOverview
{
CampaignId = campaign.Id,
CmpaignTitle = campaign.Title,
CampaignDescription = campaign.Description,
BusinessName = business.BusinessName,
BusinessId = business.Id
};
overview.Add(overviewItem);
}
}
}