Создание динамических отчетов из Mongodb в C #, с объединением нескольких соединений, группового режима, условий заказа - PullRequest
0 голосов
/ 23 мая 2019

Я пытаюсь построить построитель отчетов, мои данные в настоящее время сохраняются в mongodb. Коллекции mongo создаются динамически в соответствии с формами.

Мне нужно объединить несколько коллекций монго в C # и извлечь выбранные данные.

Пример у меня есть 3 коллекции Компания - список всех компаний Директор - Список всех директоров CompanyDirector - Список каждого директора для комбинации компании

Я хочу присоединиться к Компании с Директором Компании и Директором Компании с Директором и получить список всех Директоров в компании динамически.

Это один из вариантов использования.

Поскольку построитель отчетов является динамическим, количество коллекций меняется, имена коллекций меняются, количество объединений также меняется.

Итак, как написать Joins on Mongo динамически из C #

Если он статический, я могу сделать что-то подобное, но как создать этот запрос динамически, я не смогу получить.

var Client = new MongoClient(connection);
var newDB = Client.GetDatabase("newDB");
var compDir = newDB.GetCollection<BsonDocument>("CompanyDirector");
var dir = newDB.GetCollection<BsonDocument>("director");
var comp = newDB.GetCollection<BsonDocument>("company");
var query = from c in comp.AsQueryable()
join cd in compDir.AsQueryable() on c["CId"] equals   cd["ID"]
join d in dir.AsQueryable() on cd["DID"] equals d["dId"]
 where c["CompanyId"] == 7
 select new
 {
  CompanyName = c["CompanyName"],
  DirectorName = d["directorName"],
  Email = d["email"],
  CompId = cd["companyID"],
  CompId2 = c["CompanyId"]
  };
...