考虑以下依赖关系:
org.springframework.boot.spring-boot-starter-data-mongodb-reactive
(2.0.2.RELEASE)我有一个我需要检索不同值的集合。但是,当我使用查询方法检索Flux
个不同的值时,它无法正常工作。我使用封闭式投影IdentifierOnly
:
@Repository
public interface FooBarRepository extends ReactiveCrudRepository<FooBar, String> {
Flux<IdentifierOnly> findDistinctByFooAndBar(String foo, String bar);
}
文档/集合类:
@Document
public class FooBar {
private String identifier; // not unique
private String foo;
private String bar;
// extra fields
// getters and setters
}
封闭式预测:
public interface IdentifierOnly {
getIdentifier();
}
但是ReactiveMongoTemplate
执行和记录的查询如下:find using query: { "foo" : "xxxx", "bar" : "yyyy" } fields: Document{{identifier=1}} for class: class org.example.models.FooBar in collection: fooBar
并且不会以不同的方式返回任何结果,因为它包含重复项。
我做错了什么?如何根据特定查询检索不同的值(标识符)?
答案 0 :(得分:2)
那还行不通。我提交了DATAMONGO-1985来调查我们如何整合不同的查询。
MongoDB提供了一个独特的操作,只需要一个字段来检索不同的值。此操作可在Template API上使用,但不能通过存储库API获得。从存储库的角度来看,实际上没有可能指定应该用于不同操作的字段。
上面的代码形成了一个有趣的案例,它使用了导出不同查询所需的所有成分(不同的关键字,单个字段的封闭投影)。