SpringBoot中的MongoTemplate的各種條件查詢示例詳解
更新時間:2024年01月05日 14:43:00 作者:kenhins
這篇文章主要介紹了SpringBoot中的MongoTemplate的各種條件查詢示例詳解,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借價值,需要的朋友參考下吧
SpringBoot之MongoTemplate的各種條件查詢 (嵌套對象查詢)
/** * 指定field查詢 */ public void specialFieldQuery() { Query query = new Query(Criteria.where("user").is("用戶名blog")); // 查詢一條滿足條件的數據 Map result = mongoTemplate.findOne(query, Map.class, COLLECTION_NAME); System.out.println("query: " + query + " | specialFieldQueryOne: " + result); // 滿足所有條件的數據 List<Map> ans = mongoTemplate.find(query, Map.class, COLLECTION_NAME); System.out.println("query: " + query + " | specialFieldQueryAll: " + ans); } /** * 多個查詢條件同時滿足 */ public void andQuery() { Query query = new Query(Criteria.where("user").is("用戶名blog").and("age").is(18)); Map result = mongoTemplate.findOne(query, Map.class, COLLECTION_NAME); System.out.println("query: " + query + " | andQuery: " + result); } /** * 或查詢 */ public void orQuery() { // 等同于 db.getCollection('demo').find({"user": "用戶名blog", $or: [{ "age": 18}, { "sign": {$exists: true}}]}) Query query = new Query(Criteria.where("user").is("用戶名blog") .orOperator(Criteria.where("age").is(18), Criteria.where("sign").exists(true))); List<Map> result = mongoTemplate.find(query, Map.class, COLLECTION_NAME); System.out.println("query: " + query + " | orQuery: " + result); // 單獨的or查詢 // 等同于Query: { "$or" : [{ "age" : 18 }, { "sign" : { "$exists" : true } }] }, Fields: { }, Sort: { } query = new Query(new Criteria().orOperator(Criteria.where("age").is(18), Criteria.where("sign").exists(true))); result = mongoTemplate.find(query, Map.class, COLLECTION_NAME); System.out.println("query: " + query + " | orQuery: " + result); } /** * in查詢 */ public void inQuery() { // 相當于: Query query = new Query(Criteria.where("age").in(Arrays.asList(18, 20, 30))); List<Map> result = mongoTemplate.find(query, Map.class, COLLECTION_NAME); System.out.println("query: " + query + " | inQuery: " + result); } /** * 數字類型,比較查詢 > */ public void compareBigQuery() { // age > 18 Query query = new Query(Criteria.where("age").gt(18)); List<Map> result = mongoTemplate.find(query, Map.class, COLLECTION_NAME); System.out.println("query: " + query + " | compareBigQuery: " + result); // age >= 18 query = new Query(Criteria.where("age").gte(18)); result = mongoTemplate.find(query, Map.class, COLLECTION_NAME); System.out.println("query: " + query + " | compareBigQuery: " + result); } /** * 數字類型,比較查詢 < */ public void compareSmallQuery() { // age < 20 Query query = new Query(Criteria.where("age").lt(20)); List<Map> result = mongoTemplate.find(query, Map.class, COLLECTION_NAME); System.out.println("query: " + query + " | compareSmallQuery: " + result); // age <= 20 query = new Query(Criteria.where("age").lte(20)); result = mongoTemplate.find(query, Map.class, COLLECTION_NAME); System.out.println("query: " + query + " | compareSmallQuery: " + result); } /** * 正則查詢 */ public void regexQuery() { Query query = new Query(Criteria.where("user").regex("^用戶名blog")); List<Map> result = mongoTemplate.find(query, Map.class, COLLECTION_NAME); System.out.println("query: " + query + " | regexQuery: " + result); } /** * 查詢總數 */ public void countQuery() { Query query = new Query(Criteria.where("user").is("用戶名blog")); long cnt = mongoTemplate.count(query, COLLECTION_NAME); System.out.println("query: " + query + " | cnt " + cnt); } /** * 查詢總數 */ public void countQuery() { Query query = new Query(Criteria.where("user").is("用戶名blog")); long cnt = mongoTemplate.count(query, COLLECTION_NAME); System.out.println("query: " + query + " | cnt " + cnt); } /** * 排序查詢 */ public void sortQuery() { // sort查詢條件,需要用with來銜接 Query query = Query.query(Criteria.where("user").is("用戶名blog")).with(Sort.by("age")); List<Map> result = mongoTemplate.find(query, Map.class, COLLECTION_NAME); System.out.println("query: " + query + " | sortQuery " + result); } /** * 分頁查詢 */ public void pageQuery() { // limit限定查詢2條 Query query = Query.query(Criteria.where("user").is("用戶名blog")).with(Sort.by("age")).limit(2); List<Map> result = mongoTemplate.find(query, Map.class, COLLECTION_NAME); System.out.println("query: " + query + " | limitPageQuery " + result); // skip()方法來跳過指定數量的數據 query = Query.query(Criteria.where("user").is("用戶名blog")).with(Sort.by("age")).skip(2); result = mongoTemplate.find(query, Map.class, COLLECTION_NAME); System.out.println("query: " + query + " | skipPageQuery " + result); }
mongodbTemplate 查詢嵌套對象(嵌套對象屬性為條件)
@ApiOperation("測試查詢") @PostMapping("/getTestList") public Response<IPage<TicketResp>> getTestList(TicketVo ticket, @RequestParam(required = false) Integer pageNum, @RequestParam(required = false) Integer pageSize) { if(null == pageNum || null == pageSize){ pageNum = 1;pageSize = 10; } IPage<TicketResp> page = new Page<>(pageNum,pageSize); page = ticketService.getMyTicketList(page,ticket); //return Response.ok(page); // Criteria criteria = Criteria.where("_id").is(ticket.getTicketKey()) // .and("ticketContent.createUser").is("110201010"); Criteria criteria = Criteria.where("ticketContent.createUser").is("110201010"); Query query = new Query(criteria); List<TicketInfo> objList = mongoTemplate.find(query, TicketInfo.class); return Response.ok(objList); // History history = null; // //封裝對象列表查詢條件 // List<AggregationOperation> commonOperations = new ArrayList<>(); // //1. 指定查詢主文檔 // MatchOperation match = Aggregation.match(Criteria.where("userId").is("2")); // commonOperations.add(match); // //2. 指定投影,返回哪些字段 // ProjectionOperation project = Aggregation.project("historyList"); // commonOperations.add(project); // //3. 拆分內嵌文檔 // UnwindOperation unwind = Aggregation.unwind("historyList"); // commonOperations.add(unwind); // //4. 指定查詢子文檔 // MatchOperation match2 = Aggregation.match( // Criteria.where("historyList.hh").is("2")); // commonOperations.add(match2); // // //創(chuàng)建管道查詢對象 // Aggregation aggregation = Aggregation.newAggregation(commonOperations); // AggregationResults<JSONObject> reminds = mongoTemplate // .aggregate(aggregation, "history", JSONObject.class); // List<JSONObject> mappedResults = reminds.getMappedResults(); // if (mappedResults != null && mappedResults.size() > 0) { // history = JSONObject // .parseObject(mappedResults.get(0).getJSONObject("historyList").toJSONString(), History.class); // } }
到此這篇關于SpringBoot中的MongoTemplate的各種條件查詢的文章就介紹到這了,更多相關SpringBoot MongoTemplate條件查詢內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
SpringBoot整合RabbitMQ處理死信隊列和延遲隊列
這篇文章將通過示例為大家詳細介紹SpringBoot整合RabbitMQ時如何處理死信隊列和延遲隊列,文中的示例代碼講解詳細,需要的可以參考一下2022-05-05實例講解Java中random.nextInt()與Math.random()的基礎用法
今天小編就為大家分享一篇關于實例講解Java中random.nextInt()與Math.random()的基礎用法,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-02-02