在游标上迭代时,我看到一个奇怪的行为:提取 second 批处理非常慢(几秒钟或更长时间)。第一批相当快,第二批之后的所有批次也是如此。另一个奇怪的是,我可以通过增加批处理大小来消除这种行为(默认为100,我将其增加为800)。
MongoCursor<Document> it = collection
.find()
.batchSize(800)
.projection(Projections.fields(Projections.include("year")))
.iterator();
int count = 0;
while (it.hasNext()) {
System.out.println(""+count+" : "+it.next());
count++;
}
对于上面的示例,我使用的数据库大约有100万条记录。如果我未设置批量大小,则在打印第100条记录后暂停,然后继续正常进行。
有人可以解释为什么会这样吗?是服务器还是客户端中的错误?是否表明我设置数据库的方式有问题?
服务器版本:4.0.10
Java客户端版本:3.10.1