Abdullah Erdogan
Abdullah Erdogan

Reputation: 23

RavenDB using filter with group by

I have a Transaction entity.

I can make group by by (CustomerCode, CustomerName) then select CustomerCode and Total(Amount).

It is easy. But When I Want to filter AtCreated. I have An Error.

Unhandled exception. Raven.Client.Exceptions.InvalidQueryException: Raven.Client.Exceptions.InvalidQueryException: Field 'AtCreated' isn't neither an aggregation operation nor part of the group by key Query: from Transactions group by CustomerCode, CustomerName where AtCreated >= $p0 select CustomerCode, count() as Total Parameters: {"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();

How can I Grouping filtered data?

Thank You.

Upvotes: 2

Views: 803

Answers (1)

Danielle
Danielle

Reputation: 3839

Create a Map-Reduce Index and then query on it.
https://ravendb.net/docs/article-page/4.2/csharp/indexes/map-reduce-indexes

For example, in this example, you can query on 'Category' field because it was indexed (meaning it was part of the Map-Reduce index definition)

See short demo examples in: https://demo.ravendb.net/

Upvotes: 2

Related Questions