Запрос соединения MongoDB с драйвером C # - PullRequest
0 голосов
/ 21 октября 2018

У меня есть следующий код для запроса (производительность составляет около 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);
        }
    }
}
...