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ù)字類(lèi)型,比較查詢 >
*/
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ù)字類(lèi)型,比較查詢 <
*/
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來(lái)銜接
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);
}
/**
* 分頁(yè)查詢
*/
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()方法來(lái)跳過(guò)指定數(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)文章
SpringBoot中各個(gè)層級(jí)結(jié)構(gòu)的具體實(shí)現(xiàn)
在SpringBoot項(xiàng)目中,常常會(huì)把代碼文件放入不同的包中,本文主要介紹了SpringBoot中各個(gè)層級(jí)結(jié)構(gòu)的具體實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2024-05-05
SpringBoot項(xiàng)目中java -jar xxx.jar沒(méi)有主清單屬性的解決方法
這篇文章主要給大家介紹了SpringBoot項(xiàng)目中java -jar xxx.jar沒(méi)有主清單的解決方法,文中通過(guò)代碼示例給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-01-01
Springboot處理CORS跨域請(qǐng)求的三種方法
這篇文章主要介紹了Springboot處理CORS跨域請(qǐng)求的三種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06
Java通過(guò)Modbus簡(jiǎn)單實(shí)現(xiàn)數(shù)采的示例代碼
本文介紹了Java通過(guò)Modbus簡(jiǎn)單實(shí)現(xiàn)數(shù)采,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-11-11
javaWeb使用驗(yàn)證碼實(shí)現(xiàn)簡(jiǎn)單登錄
這篇文章主要為大家詳細(xì)介紹了javaWeb使用驗(yàn)證碼實(shí)現(xiàn)簡(jiǎn)單登錄,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-08-08

