Mongo DB在FindIterable迭代上抛出NullPointerException

时间:2018-09-20 01:33:55

标签: java mongodb asynchronous

我正在使用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。

此异常可能是什么原因?

1 个答案:

答案 0 :(得分:0)

问题是我正在使用异步驱动程序,该驱动程序不适合从DB读取数据并将其用于目的,不包括数据流。因此,切换到同步驱动程序,现在它可以正常工作。

P.S。我本想删除此问题,但保持完整,以防万一有人遇到相同的问题,他/他可能会找到解决方法。