我正在将Spring Data Mongo版本1.10.18与Java 8结合使用。我不了解通过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);
控制台输出为:
findOneResult: 1
firstInListResult: 4
在这里要清楚,我期望的答案是4,这意味着firstInListResult
在引用期望的文档。
因此,有两个问题:
findOneResult
和firstInListResult
在同一文档中没有引用一个?还是换一种方式问,findOne
为什么找不到第一个文档?答案 0 :(得分:0)
事实证明,这当前是Spring Data MongoDb的GridFsTemplate实现中的错误。 https://jira.spring.io/browse/DATAMONGO-2411令人惊讶的是,在我最初问这个问题后的四天前,就创建了一个带有修复程序的请求请求。