SpringBoot中的MongoTemplate的各種條件查詢示例詳解
SpringBoot之MongoTemplate的各種條件查詢 (嵌套對(duì)象查詢)
/** * 指定field查詢 */ public void specialFieldQuery() { Query query = new Query(Criteria.where("user").is("用戶名blog")); // 查詢一條滿足條件的數(shù)據(jù) Map result = mongoTemplate.findOne(query, Map.class, COLLECTION_NAME); System.out.println("query: " + query + " | specialFieldQueryOne: " + result); // 滿足所有條件的數(shù)據(jù) List<Map> ans = mongoTemplate.find(query, Map.class, COLLECTION_NAME); System.out.println("query: " + query + " | specialFieldQueryAll: " + ans); } /** * 多個(gè)查詢條件同時(shí)滿足 */ 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); // 單獨(dú)的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() { // 相當(dāng)于: 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); } /** * 數(shù)字類型,比較查詢 > */ 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); } /** * 數(shù)字類型,比較查詢 < */ 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); } /** * 查詢總數(shù) */ 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); } /** * 查詢總數(shù) */ 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()方法來跳過指定數(shù)量的數(shù)據(jù) 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 查詢嵌套對(duì)象(嵌套對(duì)象屬性為條件)
@ApiOperation("測(cè)試查詢") @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; // //封裝對(duì)象列表查詢條件 // 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. 拆分內(nèi)嵌文檔 // UnwindOperation unwind = Aggregation.unwind("historyList"); // commonOperations.add(unwind); // //4. 指定查詢子文檔 // MatchOperation match2 = Aggregation.match( // Criteria.where("historyList.hh").is("2")); // commonOperations.add(match2); // // //創(chuàng)建管道查詢對(duì)象 // 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); // } }
到此這篇關(guān)于SpringBoot中的MongoTemplate的各種條件查詢的文章就介紹到這了,更多相關(guān)SpringBoot MongoTemplate條件查詢內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java數(shù)據(jù)類型轉(zhuǎn)換的示例詳解
Java程序中要求參與的計(jì)算的數(shù)據(jù),必須要保證數(shù)據(jù)類型的一致性,如果數(shù)據(jù)類型不一致將發(fā)生類型的轉(zhuǎn)換。本文將通過示例詳細(xì)說說Java中數(shù)據(jù)類型的轉(zhuǎn)換,感興趣的可以了解一下2022-10-10JAVA對(duì)字符串進(jìn)行32位MD5加密的實(shí)踐
本文主要介紹了JAVA對(duì)字符串進(jìn)行32位MD5加密的實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08javaSE基礎(chǔ)如何通俗的理解javaBean是什么
所謂的Java Bean,就是一個(gè)java類,編譯后成為了一個(gè)后綴名是 .class的文件。這就是Java Bean,很多初學(xué)者,包括當(dāng)年的我自己,總是被這些專有名詞搞的暈頭轉(zhuǎn)向2021-10-10SpringBoot整合RabbitMQ處理死信隊(duì)列和延遲隊(duì)列
這篇文章將通過示例為大家詳細(xì)介紹SpringBoot整合RabbitMQ時(shí)如何處理死信隊(duì)列和延遲隊(duì)列,文中的示例代碼講解詳細(xì),需要的可以參考一下2022-05-05實(shí)例講解Java中random.nextInt()與Math.random()的基礎(chǔ)用法
今天小編就為大家分享一篇關(guān)于實(shí)例講解Java中random.nextInt()與Math.random()的基礎(chǔ)用法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-02-02