[英]$or operator with multiple expressions and multiple fields in an expression using Spring Data Reactive MonogoDB
在 MongoDB 中,我可以使用$or[{key1:'value11', key2:'value12'}, {key1:'value21', key2:'value22'}, {key1:'value31', key2:'value32'}, ...]
來查詢與$or
運算符中的至少一個表達式匹配的多個文檔。 那么如何使用 Spring Data Reactive MonogoDB 來完成這件事?
特別是,我將實體 class 定義為:
@Document
public class MyDocument
{
@Id
private String id;
private String field1;
private String field2;
}
然后,實體的存儲庫接口:
public interface MyDocumentRepository extends ReactiveMongoRepository<MyDocument, String>
現在的問題是如何在MyDocumentRepository
中定義一個方法來查詢包含field1
和field2
的文檔:
findAllBy(field1AndField2)In
???) @Query("{$or:[(:fields)]} Flux<MyDocument> findAllBy????(Flux<???> fields)
Spring 數據 MongoDB 已支持ReactiveMongoTemplate
。 在存儲庫中,您可以將其用作與 MongoDB 的連接,它可以與@Autowire
一起使用。
在ReactiveMongoTemplate
中,您可以使用and
和or
之類的操作創建Criteria
Query query = new Query();
query.addCriteria(
new Criteria().andOperator(
Criteria.where("field1").exists(true),
Criteria.where("field1").ne(false)
)
);
這可以通過之前創建的ReactiveMongoTemplate
實例傳遞給 MongoDB
Flux<Foo> result = reactiveMongoTemplate.find(query, Foo.class);
如果需要,可以在此處找到使用ReactiveMongoTemplate
配置的文檔
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.