У меня есть коллекция в MongoDB, в которой есть документ с именами коллекций, с которыми мне нужно работать. Мне нужно запросить эту коллекцию, получить все имена коллекций из документа внутри этой коллекции, а затем запросить эти коллекции и объединить их на основе ссылок ParentId. Ниже приводится коллекция, в которой хранится название другой коллекции
db.AllInfoCollection.find()
{
"_id" : ObjectId("5b83b982a5e17c383c8424f3"),
"CollName" : "Collection1",
},
{
"_id" : ObjectId("5b83b9aaa5e17c383c8424f7"),
"CollName" : "Collection2",
},
{
"_id" : ObjectId("5b83b9afa5e17c383c8424f8"),
"CollName" : "Collection3",
},
{
"_id" : ObjectId("5b83b9b5a5e17c383c8424f9"),
"CollName" : "Collection4",
},
{
"_id" : ObjectId("5b83b9b9a5e17c383c8424fa"),
"CollName" : "Collection5",
},
{
"_id" : ObjectId("5b84f41bc5eb3f1f7c291f94"),
"CollName" : "Collection6",
}
Все перечисленные коллекции (Collection1, Collection2, .... Collection6) создаются во время выполнения с пустыми документами. Они связаны друг с другом полями Id и ParentId.
Теперь мне нужно запросить этот AllInfoCollection , получить имена коллекций и присоединиться к ним и сгенерировать окончательный результат соединения ($ lookup). Я могу запросить и получить список сбора, но я не уверен, как добавить проекцию поиска в цикл for. Любая помощь будет оценена.
public void RetrieveDynamicCollection()
{
IMongoDatabase _db = client.GetDatabase("MyDb");
var collectionList = _db.GetCollection<AllInfoCollection>("AllInfoCollection").AsQueryable().Distinct().Select(x => x.CollectionName).ToList();
for(int i = 0; i < collectionList.Count; i++)
{
var collectionName = collectionList[i];
IMongoCollection<BsonDocument> collection = _db.GetCollection<BsonDocument>(collectionName);
var options = new AggregateOptions()
{
AllowDiskUse = false
};
//not able to proceed here
}
}