我正在使用collection.find()。into()从MongoDB中检索文档以生成文档。以下是代码-
List<Document> scrapingInformation = new LinkedList<>();
database.getCollection(scrapingInformationByClientidJobid)
.find(and(eq("clientId", clientId), eq("jobId", jobId)))
.into(scrapingInformation, (res, ex) -> {
System.out.println("Exception while iterating over the
finditerable and adding to document list: " + ex.getMessage());
});
System.out.println("Total populated documents in list: " + scrapingInformation.size());
数据库中有数据。 find()
方法也读取该数据。当我尝试对数据进行迭代时,问题就来了。
我也尝试遍历FindIterable。还有NullPointerException。
我安装的版本是4.0和驱动程序3.8.1。为了消除版本冲突的可能性,我降级到3.6.1,但仍然存在问题。
更新-导致此异常的原因可能是驱动程序的异步行为。 foreach()
或into()
可能会开始遍历Mongo DB的结果,并且该方法将离开其范围。因此,列表的大小为0。
此异常可能是什么原因?
答案 0 :(得分:0)
问题是我正在使用异步驱动程序,该驱动程序不适合从DB读取数据并将其用于目的,不包括数据流。因此,切换到同步驱动程序,现在它可以正常工作。
P.S。我本想删除此问题,但保持完整,以防万一有人遇到相同的问题,他/他可能会找到解决方法。