RavenDB использует фильтр с группировкой по - PullRequest
2 голосов
/ 28 января 2020

У меня есть объект транзакции.

Я могу создать группу по (CustomerCode, CustomerName), затем выбрать CustomerCode и Total (Amount).

Это просто. Но когда я хочу фильтровать AtCreated. У меня есть ошибка.

Необработанное исключение. Raven.Client.Exceptions.InvalidQueryException: Raven.Client.Exceptions.InvalidQueryException: поле 'AtCreated' не является ни операцией агрегации, ни частью группы по ключу Query: из группы транзакций по CustomerCode, CustomerName, где AtCreated> = $ p0 select CustomerCode, count () в виде итоговых параметров: {"p0": "2019-01-01T00: 00: 00.0000000"}

    public class Transactions
   {
        public string Id { get; set; }
        public long TransId { get; set; }
        public DateTime AtCreated { get; set; }
        public string CustomerCode { get; set; }
        public string CustomerName { get; set; }
        public string City { get; set; }
        public double Amount { get; set; }
        public string GXF { get; set; }

    }

var transactList = session.Query<Transactions>()
                    .Where(a=>a.AtCreated >= new DateTime(2019,01,01))
                    .GroupBy(a => new {a.CustomerCode, a.CustomerName})
                    .Select(a => new {a.Key.CustomerCode, Total = a.Count()})
                    .ToList();

Как группировать отфильтрованные данные?

Спасибо .

1 Ответ

2 голосов
/ 28 января 2020

Создайте Map-Reduce Index и затем запросите его.
https://ravendb.net/docs/article-page/4.2/csharp/indexes/map-reduce-indexes

Например, в этот пример , вы можете запросить в поле ' Категория ', потому что оно было проиндексировано (то есть оно было частью определения индекса Map-Reduce)

См. короткие демонстрационные примеры в: https://demo.ravendb.net/

...