2016-09-06 3 views
0

В настоящее время у меня есть монгодб, заполненный ресторанами. В каждом ресторане есть массив с объектами обзора. Я пытаюсь получить список каждого объекта обзора в C#, но я не могу заставить его работать.C# и mongoDB - Извлечение значений из массива

Чтобы уточнить, я могу получить ресторан, но я не могу получить список только объектов обзора на C#.

Я попытался это, но он просто возвращает объекты ресторан мне:

var coll = Database.GetCollection<Restaurant>("restaurants") 
      .Aggregate() 
      .Unwind(x => x.reviews); 
     var result = await coll.ToListAsync(); 

     foreach(var r in result) 
     { 
      Console.WriteLine(r.ToString()); 
     } 

Это мой ресторан класс:

public class Restaurant 
{ 
    [BsonId] 
    private ObjectId _id { get; set; } 
    [BsonElement("name")] 
    public string name { get; set; } 
    [BsonElement("reviews")] 
    public List<Review> reviews { get; set; } 

    public Restaurant(string name) 
    { 
     _id = ObjectId.GenerateNewId(); 
     this.name = name; 
     reviews = new List<Review>(); 
    } 

    public void addReview(Review r) 
    { 
     reviews.Add(r); 
    } 

    public void removeReview(Review r) 
    { 
     reviews.Remove(r); 
    } 
} 

Любая помощь будет принята с благодарностью!

+0

http://stackoverflow.com/questions/33531808/mongodb-c-sharp-aggregation-unwind-groupby –

+0

Я не понимаю, что это связано с созданием списка элементов из массива? – RandomStranger

+1

Я не думаю, что вы получаете объекты ресторанов ... В моем коде вы можете восстановить массив BsonDocuments. Но я не проверял, что есть в документах :) –

ответ

1

Вам нужна функция класса, чтобы вернуть имя ресторана и объект обзора.

public String getName(Restaurant rest) 
{ 
    return rest.name; 
} 

public List<Review> getReviews(Restaurant rest) 
{ 
    return rest.reviews; 
} 

Edit: Извините неправильно понял вопрос. Надеюсь, это то, что вы искали сейчас.

+0

Ну, это помогает, но мне все равно не помогает создавать объекты обзора. – RandomStranger

+0

@Bas Добавлена ​​функция, которая должна сделать это для вас –

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