5
我正在使用spring-data-mongodb。spring-data-mongodb可選查詢參數
我想通過在查詢中傳遞一些可選參數來查詢數據庫。
我有一個域類。
public class Doc {
@Id
private String id;
private String type;
private String name;
private int index;
private String data;
private String description;
private String key;
private String username;
// getter & setter
}
我的控制器:
@RequestMapping(value = "/getByCategory", method = RequestMethod.GET, consumes = MediaType.APPLICATION_JSON, produces = MediaType.APPLICATION_JSON)
public Iterable<Doc> getByCategory(
@RequestParam(value = "key", required = false) String key,
@RequestParam(value = "username", required = false) String username,
@RequestParam(value = "page", required = false, defaultValue = "0") int page,
@RequestParam(value = "size", required = false, defaultValue = "0") int size,
@RequestParam(value = "categories") List<String> categories)
throws EntityNotFoundException {
Iterable<Doc> nodes = docService.getByCategory(key, username , categories, page, size);
return nodes;
}
這裏重點和用戶名是可選的查詢參數。
如果我傳遞了其中的任何一個,它應該返回給定密鑰或用戶名的匹配文檔。
我的服務的方法是:
public Iterable<Doc> getByCategory(String key, String username, List<String> categories, int page, int size) {
return repository.findByCategories(key, username, categories, new PageRequest(page, size));
}
庫:
@Query("{ $or : [ {'key':?0},{'username':?1},{categories:{$in: ?2}}] }")
List<Doc> findByCategories(String key, String username,List<String> categories, Pageable pageable);
但是,通過使用上面的查詢不返回文檔與任一給定的密鑰或用戶名。 我的查詢出了什麼問題?
您可以開始設置MongoDB事件探查器,使用命令db.setProfilingLevel(2)記錄所有操作(以及查詢),然後準確查看您正在執行的查詢。請記住,完成後將其設置爲0。 – araknoid