我正在尝试编写一个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,但是找不到它。