Синтаксис вопроса о сокращении части индекса RavenDB, средний расчет - PullRequest
2 голосов
/ 28 февраля 2020

Я борюсь с правильным синтаксисом для столбца усреднения. Что у меня есть - из редактора RavenDB Studio:

Карта:

from area in docs.Level5_AdministrativeAreas
select new 
{
     area.NAME_4,
     totalPrice = area.pricePerSquareMetre,
     areaCount = 1,
     priceAverage = 0
}

Уменьшение:

from result in results
group result by new { result.NAME_4 } into g
select new 
{
   NAME_4 = g.Key.NAME_4,
   totalPrice = g.Sum(x => x.totalPrice),
   areaCount = g.Sum(x => x.areaCount),
   priceAverage = totalPrice / areaCount
}

Подсчет и общая стоимость рассчитываются правильно, но я не не знаю, как ссылаться на totalPrice и areaCount.

Требуется ли дополнительный блок выбора? Я пробовал "g.totalPrice" и "g.priceAverage", но он не распознается.

Спасибо за помощь!

Ответы [ 2 ]

5 голосов
/ 01 марта 2020

Часть Reduce должна выглядеть следующим образом:

Reduce :

from result in results
group result by new { result.NAME_4 } into g
let theCount = g.Sum(x => x.areaCount)
let theTotal = g.Sum(x => x.totalPrice)
select new 
{
   NAME_4 = g.Key.NAME_4,
   totalPrice = theTotal,
   areaCount = theCount ,
   priceAverage = theTotal / theCount 
}

=> Читать раздел Типичные ошибки с индексами MapReduce

2 голосов
/ 29 февраля 2020

Наверное, не идеально, но это работает (поговорим о том, чтобы не видеть лес за деревьями ...)

priceAverage = g.Sum(x => x.totalPrice) / g.Sum(x => x.areaCount)
...