我需要使用@Compoundindex返回一组对象。
我已经尝试过Jdk 8
以下类是实体类
@Document("filter")
@CompoundIndex(def = "{'spaceCategory': 1, 'eventType': 1}")
public class Filter extends BaseEntity {
@Indexed
private String spaceCategory;
@Indexed
private String eventType;
@DBRef(lazy = true)
private List<UiFilter> uiFilters;
public Filter(){}
public Filter(String id){
super(id);
}
public Filter(String spaceCategory, String eventType) {
this.spaceCategory = spaceCategory;
this.eventType = eventType;
}
//Getters and Setters
}
我需要返回的是特定spaceCategory和eventType的UiFilters
以下代码返回UiFilters(Restcontroller)类
@GetMapping("/by-space")
public Filter findBySpaceCategoryAndEventType(@RequestParam String spaceCategory, @RequestParam String eventType ){
// return filterService.findBySpaceCategoryAndEventType(UiFilter);
// return null;
}
在使用这样的URL XXXX?spaceCategory =工作与EVENTTYPE =热%20Desk我需要从以下数据集只得到uiFilter “
馆藏数据
[
{
"id": "1",
"status": 1,
"spaceCategory": "Work",
"eventType": "Hot Desk",
"uiFilters": [
{
"id": "1",
"status": 1,
"label": "Duration",
"type": {
"id": "1",
"status": 1,
"name": "SINGLE_SELECT"
},
"value": [
"Daily",
"Weekly",
"Monthly"
]
},
{
"id": "2",
"status": 1,
"label": "Start Date",
"type": {
"id": "3",
"status": 1,
"name": "DATE_PICKER"
},
"value": ""
},
{
"id": "3",
"status": 1,
"label": "Price",
"type": {
"id": "3",
"status": 1,
"name": "RANGE_SELECT"
},
"value": {
"min": 1,
"max": 100,
"default": 50
}
},
{
"id": "4",
"status": 1,
"label": "Wi-Fi",
"type": {
"id": "4",
"status": 1,
"name": "SWITCH"
},
"value": "true"
}
]
}
]
通过使用以下自定义查询找到了答案
@Override
public List<Filter> findFilterBySpaceCategoryAndEventType(String spaceCategory, String eventType) {
Query query = new Query();
query.addCriteria(Criteria.where("spaceCategory").is(spaceCategory));
query.addCriteria(Criteria.where("eventType").is(eventType));
List<Filter> filters= super.mongoOperations.find(query, Filter.class);
return filters;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句