1. 程式人生 > >mongoDB的Criteria查詢:多表聯合查詢

mongoDB的Criteria查詢:多表聯合查詢

問題概述:新接手的專案首次接觸非關係型資料庫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解決,那就只好這樣分步執行了,有更好的辦法嗎