tengo 2 tipos diferentes de objetos almacenados en RavenDb, que son una relación padre/hijo, tipo como este en JSON:Mapa reducir en más de 2 RavenDb colecciones con la colección de niño
Account/1
{
"Name": "Acc1",
}
Items/1
{
"Account": "Account/1",
"Value" : "100",
"Tags": [
"tag1",
"tag2"]
}
Items/2
{
"Account": "Account/1",
"Value" : "50",
"Tags": [
"tag2"]
}
Tenga en cuenta que no lo hago desea almacenar estos en el mismo documento, ya que una cuenta puede tener miles de elementos.
Estoy intentando escribir un mapa/reducir el índice de que me va a devolver algo como:
{
"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"
}]
}
es decir, una lista de todos los nombres de las etiquetas distintas a lo largo con el número de cada uno y su valor.
Creo que necesito usar un mapa múltiple para asignar juntas las colecciones de Cuenta y Artículos, pero no puedo entender la parte de reducción para crear la parte "TagInfo" del resultado.
¿Es esto posible, o estoy modelando todo esto mal en Raven?
EDIT:
La clase Quiero recuperar de esta consulta sería algo como esto:
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;}
}
Gracias Daniel, no sabía sobre 'TransformResults'! Aunque eso no es exactamente lo que quería, buscaba un resultado por Cuenta, con una propiedad que contiene los detalles de la etiqueta, ver mi edición.Además, el TotalSum anterior no funciona, ya que suma TODOS los valores de los elementos, no solo los de la cuenta que estoy consultando (¿creo que la reducción necesita agruparse en la cuenta en lugar de la etiqueta?) – Simon
No puede tener una índice que tiene una clase anidada dentro de su resultado. No creo que puedas obtener lo que quieres en un solo índice. En cambio, prefiero tener algunos índices independientes y consultarlos todos para obtener toda la información que necesita o cambiar el modelo de datos para que se adapte mejor a ese patrón de acceso a los datos. –
Ok, gracias Daniel. Pensé que ese podría ser el caso, pero no estaba muy seguro. Muchas gracias por tu tiempo. – Simon