asp.net web api - RavenDb - ArgumentException: The field '__document_id' is not indexed, cannot sort on fields that are not indexed -


i have ravendb set queried through webapi layer. ravendb layer returns iqueriable onto odata filters applied in webapi layer. every employee object saved in ravendb has version property associated (value of datetime.utcnow.ticks while saving document). working on requirement can save same employee multiple times on period of time (as separate entities, differing in property values same id), want fetch latest 1 based on version value.

in order achieve used mapreduce described below :

public class employee_version : abstractindexcreationtask<employee> {     public employee_version()     {         map = employees => employee in employees                            select new employee                            {                                firstname = employee.firstname,                                lastname = employee.lastname,                                departments = employee.departments,                                id = employee.id,                                version = employee.version,                                managerid = employee.managerid,                                employeeid=employee.employeeid                            };          reduce = results => result in results                             group result result.managerid                                 g                                 select new                                 {                                     managerid = g.orderbydescending(d => d.version).first().managerid,                                     departments = g.orderbydescending(d => d.version).first().departments,                                     firstname = g.orderbydescending(d => d.version).first().firstname,                                     lastname = g.orderbydescending(d => d.version).first().lastname,                                     version = g.orderbydescending(d => d.version).first().version,                                     id = g.orderbydescending(d => d.version).first().id,                                     employeeid = g.orderbydescending(d => d.version).first().employeeid                                 };     } } 

raven repository code :

public iqueryable<employee> getemployees(expression<func<employee, bool>> expression) {     using (var session = documentstore.opensession())     {         return session.query<employee, employee_version>().statistics(out querysstatistics).where(expression),     } } 

web api layer code :

expression<func<employee, bool>> manageridfilter = e => e.managerid == 123; var employeequeryable = _employeerepository.getemployees(manageridfilter); var queryable = modeloptions.applyto(employeequeryable.queryable, new odataquerysettings {     enableconstantparameterization = false,     handlenullpropagation = handlenullpropagationoption.false }); 

when query :

http://localhost/employee/list?$top=1

i following exception :

inner excpetionurl: \"/databases/documents/indexes/document/version?&query=managerid%3a123&pagesize=1&sort=__document_id&sorthint-__document_id=string\"\ \ \ \ system.argumentexception: field '__document_id' not indexed, cannot sort on fields not indexed

the same query works fine if no odata filter used.


Comments