Mongo查询得到孩子

时间:2012-02-29 05:58:32

标签: mongodb syntax fluent fluent-mongo

我正在使用流利的mongo。

我有一个实体

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

ListItem是另一个实体

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

因此主要实体SomeList具有List,而实体ListItem也有List。

我想要一个mongo查询来从ListItem获取List。

我正在使用以下查询

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 个答案:

答案 0 :(得分:1)

所以你得到列表中返回的主要SomeList集合?

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

如果您从此处删除了SingleOrDefault()来电,您会得到什么?