Mongo搜索查询:查询一系列嵌入式文档中的列表

时间:2020-04-19 07:45:57

标签: java mongodb mongodb-query

我正在尝试编写一个Mongo查询,该查询应在查询中包含对象列表,而文档应包含该对象列表。

例如,以下是搜索请求:

class SearchRquest{
  private String jeeves;
  private List<Wooster> woosters;
}

class Wooster{
  private String age;
  private String hobby;
}

如果文档包含搜索请求的Wooster列表的所有元素,则应将其返回。 我正在尝试将查询编写如下,

   public List<Wodehouse> findBySearchRequest(SearchRequest request) {
    Query query = new Query();

    if(null != request.getJeeves()) {
        query.addCriteria(Criteria.where("jeeves").is(request.getJeeves()));
    }
    if(null != request.getWoosters()){
        for(Wooster wooster: request.getWoosters()){       
          query.addCriteria(Criteria.where("woosters").elemMatch(Criteria.where("age")
          .is(wooster.getAge()).and("hobby").is(wooster.getHobby())));
        }
    }

    log.info("query = "+query);
    return mongoTemplate.find(query, Wodehouse.class, COLLECTION_NAME).size();
}

,但有以下例外情况:

org.springframework.data.mongodb.InvalidMongoDbApiUsageException: 
Due to limitations of the com.mongodb.BasicDocument, you can't add a second 'woosters' criteria. Query already contains.

我试图在上面找到一个示例wrt,但是找不到它。

0 个答案:

没有答案