2016-09-06 9 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

これは役に立ちますが、それでもまだReviewオブジェクトを作成するのには役に立たないと思っています – RandomStranger

+0

@Basそれを行う機能を追加しました –

関連する問題