SpringBoot中的MongoTemplate的各種條件查詢示例詳解
SpringBoot之MongoTemplate的各種條件查詢 (嵌套對象查詢)
/**
* 指定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);
}
/**
* 多個查詢條件同時滿足
*/
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 查詢嵌套對象(嵌套對象屬性為條件)
@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. 拆分內(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)建管道查詢對象
// 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)容請搜索腳本之家以前的文章或繼續(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-10
JAVA對字符串進(jìn)行32位MD5加密的實(shí)踐
本文主要介紹了JAVA對字符串進(jìn)行32位MD5加密的實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08
javaSE基礎(chǔ)如何通俗的理解javaBean是什么
所謂的Java Bean,就是一個java類,編譯后成為了一個后綴名是 .class的文件。這就是Java Bean,很多初學(xué)者,包括當(dāng)年的我自己,總是被這些專有名詞搞的暈頭轉(zhuǎn)向2021-10-10
SpringBoot整合RabbitMQ處理死信隊(duì)列和延遲隊(duì)列
這篇文章將通過示例為大家詳細(xì)介紹SpringBoot整合RabbitMQ時如何處理死信隊(duì)列和延遲隊(duì)列,文中的示例代碼講解詳細(xì),需要的可以參考一下2022-05-05
實(shí)例講解Java中random.nextInt()與Math.random()的基礎(chǔ)用法
今天小編就為大家分享一篇關(guān)于實(shí)例講解Java中random.nextInt()與Math.random()的基礎(chǔ)用法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-02-02

