Raven DB Запрос о коллекциях в отдельных документах - PullRequest
2 голосов
/ 14 ноября 2011

У меня есть сценарий, аналогичный следующему:

Представьте, что у меня есть три класса

public class User
{
    public string Id {get;set;}
}

public class FollowableUser
{
    public string Id{get;set;}
    public IEnumerable<string> FollowingUserIds {get;set;}
}

public class Event
{
    public string Id{get;set;}
    public IEnumerable<string> TaggedFollowableUsers {get;set;
}

Что я хотел бы сделать, это иметь возможность запрашивать по идентификатору пользователяи вернули все события (или, по крайней мере, идентификаторы событий).

edit Я пробовал это, но не знал, куда идти в уменьшенной части:

 AddMap<Event>(events => from evt in events
                                     from fUser in evt.TaggedFollowableUsers 
                                     select new 
                                                {
                                                    FUserId = fUser,
                                                    EventId = evt.Id,
                                                    UserId = (string)null
                                                });

        AddMap<FollowableUser>(fUsers => from fUser in fUsers
                                  from followingUser in child.FollowedingUserIds
                                  select new
                                             {
                                                 FUserId = fUser.Id,
                                                 EventId = (string) null,
                                                 UserId = followingUser
                                             });
        Reduce = results => from result in results
                            group result by result.FUserId
                            into g
                            select new
                                       {
                                           FUserId= g.Key,
                                           EventId = g.Select(x => x.EventId) // not sure what to do from here
                                       };

Возможно ли это сделать с одним индексируемым индексом или мне нужно сделать несколько вызовов?

Спасибо,

Мэтт

...