mongoDB的Criteria查詢:多表聯合查詢
阿新 • • 發佈:2018-12-24
問題概述:新接手的專案首次接觸非關係型資料庫mongodb,找不到地方直接寫SQL,只能通過Criteria查詢資料庫。只好查資料用hibernate的Criteria多表查詢方法,總是和網上的情況不一樣,原來mongodb的Criteria不一樣。
問題詳情:有三張表,使用者表,角色表,許可權表。使用者角色多對一,角色許可權多對多。通過許可權id查詢擁有該許可權的角色
解決辦法:
@RequestMapping("/findUserByResource") @ResponseBody public List<User> findUserByResource(String reid){ // Resource resource = resourceService.findOne(reid,"basic_resource"); List<Criteria> criterias = new ArrayList<>(); criterias.add(Criteria.where("resources").in(resource)); List<Role> roleList = roleService.findAll("basic_role",criterias,"ASC","_id"); List<Criteria> criterias2 = new ArrayList<>(); criterias2.add(Criteria.where("roles").in(roleList)); List<User> userList = userService.findAll(collectionId,criterias2,"ASC","_id"); return userList; }
無法用一句SQL解決,那就只好這樣分步執行了,有更好的辦法嗎