Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring数据mongo GridFsOperation.findOne不';我找不到第一个_Java_Spring_Spring Data Mongodb_Gridfs - Fatal编程技术网

Java Spring数据mongo GridFsOperation.findOne不';我找不到第一个

Java Spring数据mongo GridFsOperation.findOne不';我找不到第一个,java,spring,spring-data-mongodb,gridfs,Java,Spring,Spring Data Mongodb,Gridfs,我正在使用SpringDataMongo版本1.10.18和Java8。我不理解我在GridFsOperations.findOne方法中看到的行为 Query maxAccountSetVersionQuery = new Query().addCriteria(GridFsCriteria.whereMetaData("tenantId").is(tenantId)) .addCriteria(GridFsCriteria.whereMetaData("contextId")

我正在使用SpringDataMongo版本1.10.18和Java8。我不理解我在
GridFsOperations.findOne
方法中看到的行为

Query maxAccountSetVersionQuery = new Query().addCriteria(GridFsCriteria.whereMetaData("tenantId").is(tenantId))
        .addCriteria(GridFsCriteria.whereMetaData("contextId").is(businessContextId))
        .addCriteria(GridFsCriteria.whereMetaData("collection").is("genericAuthorizationAccount"))
        .with(new Sort(Sort.Direction.DESC, "metadata.accountSetVersion"));
final GridFSDBFile findOneResult = gridOperations.findOne(maxAccountSetVersionQuery);
final List<GridFSDBFile> gridFSDBFiles = gridOperations.find(maxAccountSetVersionQuery);
final GridFSDBFile firstInListResult = gridFSDBFiles.get(0);

final String output = String.format("findOneResult: %s\nfirstInListResult: %s",
                                    findOneResult.getMetaData().get("accountSetVersion"),
                                    firstInListResult.getMetaData().get("accountSetVersion"));

System.out.println(output);
这里需要说明的是,我期望的答案是4,这意味着
firstInListResult
引用的是预期的文档

因此,有两个问题:

  • 为什么
    findOneResult
    firstInListResult
    不引用同一文档中的一个?或者换一种方式问,为什么
    findOne
    找不到第一个文档
  • 有没有一种方法可以让Spring Data Mongo在排序后的查询结果中找到第一个文档,而不是让我的代码将整个集合加载到内存中,只获取第一个元素

  • 事实证明,这是SpringDataMongoDB的GridFsTemplate实现中的一个bug。令人惊讶的是,在我最初提出这个问题后,仅在4天前就创建了一个带有修复的pull请求

    findOneResult: 1
    firstInListResult: 4