2016-09-06 67 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增加了一个函数,应该为你做 –