我有这个java代码,它使用spring框架从MongoDB获取项目列表:
@Autowired
private PersonsRepository personsRepository;
...
...
// the name field is NOT INDEXED!
List<Person> dbRecords = personsRepository.findByName("John");
for (Person person: dbRecords) {
//do something
}
我需要查询的字段未编入索引,并且在不久的将来无法更改。
由于数据库包含1亿个记录,并且输出列表预计包含数百万条记录,因此我几乎没有问题:
由于
答案 0 :(得分:0)
所以我似乎找到了如何使用分页:
我在界面中添加了一个新方法:
Page<Person> findByName(@Param("name") String name, Pageable pageable);
在代码本身中我做了:
Page<Person> nextPage;
List<Person> dbRecords;
boolean stop = false;
Sort sort = new Sort(new Sort.Order(Sort.Direction.ASC, SORT_FIELD));
do {
Pageable pageable = new PageRequest(0, PAGE_SIZE, sort);
nextPage = personsRepository.findByName("john", pageable);
dbRecords = nextPage.getContent();
if (dbRecords.size() > 0) {
// do something
} else {
stop = true;
}
} while (nextPage.getSize() > 0 && !stop);
现在它的分页工作正常。