Уменьшение сопоставления в RavenDb более чем на 2 коллекции с дочерней коллекцией

У меня есть 2 разных типа объектов, хранящихся в RavenDb, которые представляют собой отношение типа родитель/потомок, как это в JSON:

Account/1
{        
    "Name": "Acc1",
}

Items/1
{
    "Account": "Account/1",
    "Value" : "100",
    "Tags": [
       "tag1",
       "tag2"]
}

Items/2
{
    "Account": "Account/1",
    "Value" : "50",
    "Tags": [
       "tag2"]
}

Обратите внимание, что я не не хочу хранить их в одном и том же документе, так как учетная запись может иметь тысячи элементов.

Я пытаюсь написать индекс map/reduce, который вернет мне что-то вроде :

{
    "Account": "Acc1",
    "TagInfo": [
        { "TagName" : "tag1",
          "Count" : "1",  //Count of all the "tag1" occurrences for acc1
          "Value" : "100" //Sum of all the Values for acc1 which are tagged 'tag1'
        },
        { "TagName" : "tag2",
          "Count" : "2",  //Two items are tagged "tag2"
          "Value" : "150"
        }]
}

, то есть список всех отдельных тегов. имена вместе с номером каждого и их значением.

Я думаю, что мне нужно использовать карту multi -для сопоставления коллекций Account и Items вместе, но я не могу понять часть сокращения для создания "TagInfo " часть результата.

Возможно ли это, или я неправильно моделирую все это в Raven?

РЕДАКТИРОВАТЬ:

Класс, который я хочу получить из этого запроса, будет выглядеть примерно так:

public class QueryResult
{
    public string AccountId {get;set;}
    public TagInfo Tags {get;set;} 
}

public class TagInfo
{
    public string TagName {get;set;}
    public int Count {get;set;}
    public int TotalSum {get;set;}
}
6
задан Simon 2 May 2012 в 20:00
поделиться