2014-12-23 3 views
0

В любом случае я могу получить каждый N-й документ в RavenDB?Каждый N-й элемент RavenDB

Я пытался что-то вроде этого, как видно на here:

Query<MyDoc, MyDoc_Index>().Where((x, i) => i % nStep == 0); 

Я получаю следующее сообщение об ошибке:

Could not understand how to translate '(i % 1000)' to a RavenDB query. Are you trying to do computation during the query? RavenDB doesn't allow computation during the query, computation is only allowed during index. Consider moving the operation to an index.

У меня нет проблем с добавлением свертка в мой индекс, если я должен. Благодаря!

ответ

1

Вы пробовали использовать метод .Skip()?

MyDoc nthValue = session.Query<MyDoc, MyDoc_Index>().Skip(nStep-1).FirstOrDefault(); 
+0

У меня есть, но он получается в уродливом агрегированном запросе, если вы хотите получить каждый пятый документ над большой коллекцией. Мне было интересно, где-то есть синтаксический сахар. – fgauna

+0

Я отмечу это как ответ, потому что кажется, что это единственный способ сделать это. Я надеюсь, что никто не должен делать то же самое из-за всех запусков базы данных, которые он вызывает. – fgauna

+0

@fgauna: Данные сортируются, когда вы выполняете это? В противном случае вы не будете контролировать то, что возвращается. При каждом его выполнении данные могут быть не одинаковыми. –

Смежные вопросы