2016-09-19 1 views
0

Я пытаюсь получить все документы внутри массива, и я хочу поместить их все в список на C#.Извлечение всего массива из MongoDB с помощью C#

У меня есть класс под названием Тема со списком пользователей, называемых последователями. Он определяется следующим образом:

public class Subject 
{ 
    public Guid _id { get; set; } 
    public List<User> Followers { get; set; } 
} 

и я использую эту функцию:

await db.Subjects.Find(FILTER HERE).ToListAsync(); 

Я просто не могу заставить его работать, любая помощь будет оценен по достоинству!

Edit: Это моя структура документа для моих подданных

{ 
    "_id" : BinData(3,"/mRuH9AiWEiEJV2Ad0UAVg=="), 
    "name" : "Subject test", 
    "address" : { 
      "Street" : "Street Test", 
      "Postalcode" : "1234AB", 
      "City" : "City Test", 
      "CountryCode" : "NL", 
      "Telephone" : "0612345678", 
      "Coordinates" : { 
        "Longitude" : "1234", 
        "Latitude" : "1234" 
      } 
    }, 
    "Followers" : [ 
      DBRef("Name test", BinData(3,"uwXp/avTGEeeaR0muzYvOA==")), 
      DBRef("Name test", BinData(3,"dK15dIEW302RWg/F1b+rtg==")) 
    ], 
    "Chefs" : [ ], 
    "Owners" : [ ] 
} 

и моей структуре пользователя:

{ 
    "_id" : BinData(3,"uwXp/avTGEeeaR0muzYvOA=="), 
    "name" : "Name test", 
    "loginDate" : ISODate("0001-01-01T00:00:00Z"), 
    "followers" : [ ] 
} 

ответ

0

Является ли это бросать ошибку или это просто пустой?

var MySubjets = await db.Subjects.Find(FILTER HERE).ToListAsync(); 

Необходимо вернуть массив предметов, соответствующих вашему фильтру.

Это то, что вы хотите? Или вы ищете массив «Последователи»?

var MySubject = await db.Subjects.Find(FILTER HERE).FirstOrDefault(); 
foreach (User MyFollower in MySubject.Followers) 
{ 
    //do your stuff... 
} 

Но еще одна важная вещь: есть ли данные в коллекции и соответствуют ли поля свойствам класса? Когда вы не должны использовать classmappings

для DBRefs сделать что-то вроде:

var MySubject = await db.Subjects.Find(FILTER HERE).FirstOrDefault(); 
foreach (var MyRelatedDocument in MySubject.Followers) 
{ 
    User MyFollower = db.FetchDBRefAs<User>(MyRelatedDocument); 
    //do your stuff... 
} 
+0

К сожалению, я хочу, чтобы получить все документы внутри этого массива, я просто не знаю, как сделать запрос на него. Поэтому там, где говорится «ФИЛЬТР ЗДЕСЬ», должен быть фильтр, который вернет мне все документы внутри этого массива. Дайте мне знать, если я недостаточно ясен! – RandomStranger

+0

Я не знаю вашу карту классов, но когда вы извлекаете документ предмета, массив последователей должен быть заполнен! – HoefMeistert

+0

О, я забыл упомянуть, что массив в документе заполнен MongoDBRefs ... Извините, я забыл! Вы знаете, как запросить это? – RandomStranger

Смежные вопросы