Как вернуть данные, передающие два параметра в запросе GET, используя @Compoundindex? - PullRequest
0 голосов
/ 11 октября 2019

Мне нужно вернуть набор объектов, используя @ 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
}

Что мне нужно вернуть, так это UiFilters определенного spaceCategory и eventType

Следующий код должен возвращать класс UiFilters (Restcontroller)

    @GetMapping("/by-space")
    public Filter findBySpaceCategoryAndEventType(@RequestParam String spaceCategory, @RequestParam String eventType ){
       // return filterService.findBySpaceCategoryAndEventType(UiFilter);
//        return null;
    }

при использовании URLнапример xxxx? spaceCategory = Work & eventType = Hot% 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"
            }
        ]
    }
]

1 Ответ

1 голос
/ 11 октября 2019

Нашли ответ с помощью пользовательского запроса следующим образом

   @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;
    }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...