У меня есть 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;}
}