2016-09-06 65 views
0

我目前有一個充滿餐館的mongodb。每家餐館都有一系列帶有評論對象的餐廳我試圖檢索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; 
} 

編輯:對不起誤解了這個問題。希望這是你正在尋找的東西。

+0

嗯,這有幫助,但它仍然沒有幫助我創建審查對象 – RandomStranger

+0

@Bas增加了一個函數,應該爲你做 –