2012-02-29 4 views
1

私は流暢なmongoを使用しています。子供を得るためのMongoの問い合わせ

私は

public class SomeList 
{ 
     public List<ItemLike> Likes { get; set; } 
     public List<ItemComment> Comments { get; set; } 
     public List<ListItem> ListItems { get; set; } 
} 

としての実体を持っているのListItemだからメインエンティティSomeListがリストを持っており、また、エンティティのListItemのリストを持っている別のエンティティ

public class ListItem 
{ 
     pub string ListItemId { get; set; } 
     public List<ItemComment> CommentsList { get; set; } 
     public List<Photo> ItemPhotos { get; set; } 
} 

です。

リストをListItemから取得するためのmongoクエリーが必要です。

私は次のクエリ

var myCollection = GetMongoDatabase().GetCollection<SomeList>("SomeLists"); 
var list = myCollection.Find(Query.EQ("ListItems.ListItemId", listItemId)).SetFields(Fields.Slice("ListItems.LikesList", 0)).SingleOrDefault(); 

ListItem listItem = list.ListItems.Where(x => x.ListItemId == listItemId).SingleOrDefault(); 
items = listItem.CommentsList; 

私はQuery.EQ(「ListItems.ListItemId」、listItemId)を行うと、それがメインSomeListエンティティを与えるを使用しています。 次の行にwhere句を再度適用します。私は欲しくない。

答えて

1

メインのSomeListコレクションがここにリストされていますか?

var list = myCollection.Find(Query.EQ("ListItems.ListItemId", listItemId)) 
      .SetFields(Fields.Slice("ListItems.LikesList", 0)).SingleOrDefault(); 

ここからSingleOrDefault()コールを削除するとどうなりますか?

+0

それでも主体が得られます。 –

+0

スライスを削除した場合に返されるのは何ですか? 'var list = myCollection.Find(Query.EQ(" ListItems.ListItemId "、listItemId));' あなたは何を取り戻していますか?このクエリは期待通りに機能していますか? – Gregor

関連する問題