Монго запрос, чтобы получить детей - PullRequest
1 голос
/ 29 февраля 2012

Я использую беглый монго.

У меня есть сущность в виде

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.

Я хочу запрос монго для получения List от ListItem.

Я использую следующий запрос

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 Ответ

1 голос
/ 29 февраля 2012

Итак, вы получаете основную коллекцию SomeList, возвращаемую здесь в списке?

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

Что вы получите, если уберете из этого вызов SingleOrDefault()?

...