簡體   English   中英

使用 Spring Data Reactive MonogoDB 的表達式中具有多個表達式和多個字段的 $or 運算符

[英]$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中定義一個方法來查詢包含field1field2的文檔:

  1. 似乎沒有合適的關鍵字來創建查詢方法( findAllBy(field1AndField2)In ???)
  2. 如果使用基於 JSON 的查詢方法,我真的知道如何完成完形填空測試......
     @Query("{$or:[(:fields)]} Flux<MyDocument> findAllBy????(Flux<???> fields)

Spring 數據 MongoDB 已支持ReactiveMongoTemplate 在存儲庫中,您可以將其用作與 MongoDB 的連接,它可以與@Autowire一起使用。

ReactiveMongoTemplate中,您可以使用andor之類的操作創建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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM