
伪代码
db.集合.distinct("字段名")
示例代码
//去重(查询性别种类)
db.hero.distinct('gender')
// 测试 结果
[
"女",
"男"
]
//根据条件去重(查询年龄在12至19岁之间的年龄列表)
db.hero.distinct('age',{'age':{$gt:12,$lt:19}})
// 测试 结果
[
13,
14,
15,
16,
17,
18
]
复制
//去重(查询性别种类)
@Test
void findDistinctTest(){
Query query =new Query();
List<String> genders = mongoTemplate.findDistinct(query,"gender","hero",String.class);
genders.stream().forEach(System.out::println);
}
复制

//根据条件去重(查询年龄在12至19岁之间的年龄列表)
@Test
void findDistinctByAgeTest(){
Query query =new Query();
query.addCriteria(new Criteria("age").gt(12).lt(19));
List<Integer> genders = mongoTemplate.findDistinct(query,"age","hero",Integer.class);
genders.stream().forEach(System.out::println);
}
复制

伪代码
db.集合.find().limit(行数)
示例代码
// 分页
db.hero.find().limit(2)
// 测试结果
// 1
{
"_id": ObjectId("6292e32a63fd032330a30ba4"),
"name": "陈",
"gender": "男",
"age": NumberInt("55"),
"dt": NumberLong("1653793578431116400")
}
// 2
{
"_id": ObjectId("6292e8c0fa63510b5822a5f4"),
"name": "席盆哲",
"gender": "男",
"age": NumberInt("54"),
"dt": NumberLong("1653795008039"),
"_class": "com.zuoyang.springbootmongo.domain.Hero"
}
// 根据条件分页(查询年龄在12至19岁之间,性别为男的两条数据)
db.hero.find({'age':{$gt:12,$lt:19},'gender':'男'}).limit(2)
// 测试结果
// 1
{
"_id": ObjectId("6292e8c1fa63510b5822a654"),
"name": "但装赣",
"gender": "男",
"age": NumberInt("13"),
"dt": NumberLong("1653795009258"),
"_class": "com.zuoyang.springbootmongo.domain.Hero"
}
// 2
{
"_id": ObjectId("6292e8c1fa63510b5822a7da"),
"name": "富入",
"gender": "男",
"age": NumberInt("13"),
"dt": NumberLong("1653795009741"),
"_class": "com.zuoyang.springbootmongo.domain.Hero"
}
复制
伪代码
db.集合.find().count()
示例代码
// 统计
db.hero.find().count()
// 测试结果
// 1
1001001
// 根据条件统计(统计年龄在12至19岁之间,性别为男的数量)
db.hero.find({'age':{$gt:12,$lt:19},'gender':'男'}).count()
// 测试结果
// 1
35404
复制
@Test
void findTest(){
Query query =new Query();
// Criteria criteria = new Criteria("age").is(15);
// query.addCriteria(criteria);
int pageSize = 2; //行数
int pageConut = 1; //页数
// 统计总行数
long count = mongoTemplate.count(query,Hero.class);
System.out.println("总行数: "+count);
Pageable pageable = PageRequest.of(pageConut,pageSize);
query.with(pageable);
List<Hero> heroes = mongoTemplate.find(query,Hero.class);
for (Hero hero : heroes) {
System.out.println(hero.getName());
}
}
复制

@Test
void findByAgeTest(){
Query query =new Query();
Criteria criteria = new Criteria("age").is(15);
query.addCriteria(criteria);
int pageSize = 2; //行数
int pageConut = 1; //页数
// 统计总行数
long count = mongoTemplate.count(query,Hero.class);
System.out.println("总行数: "+count);
Pageable pageable = PageRequest.of(pageConut,pageSize);
query.with(pageable);
List<Hero> heroes = mongoTemplate.find(query,Hero.class);
for (Hero hero : heroes) {
System.out.println("姓名: "+hero.getName()+" 年龄: "+hero.getAge());
}
}
复制

/**
* 获取性别列表(前端下拉列表数据类型)
* @return
*/
@Override
public List<Map> findGenderList(){
List<Map> datas = new ArrayList();
Query query =new Query();
for (String s : mongoTemplate.findDistinct(query, "gender", "hero", String.class)) {
Map map = new HashMap();
map.put("lable",s);
map.put("value",s);
datas.add(map);
}
return datas;
}
复制
/**
* 获取性别列表(前端下拉列表数据类型)测试用例
*/
@Test
void findGenderList(){
System.out.println(heroService.findGenderList());
}
复制

统计命中条数 按页号与行数返回数据
/**
* 分页查询
* @param pageConut 页数
* @param pageSize 行数
* @return
*/
@Override
public Map pageHeros(int pageConut,int pageSize){
Map data = new HashMap();
Query query =new Query();
// 统计总行数
long count = mongoTemplate.count(query, Hero.class);
Pageable pageable = PageRequest.of(pageConut,pageSize);
query.with(pageable);
List<Hero> heroes = mongoTemplate.find(query,Hero.class);
data.put("pageConut",pageConut);
data.put("pageSize",pageSize);
data.put("count",count);
data.put("data",heroes);
return data;
}
复制
/**
* 分页查询 测试用例
* @return
*/
@Test
void pageHerosTest(){
Map map= heroService.pageHeros(1,3);
System.out.println("pageConut: " + map.get("pageConut"));
System.out.println("data: " + map.get("data"));
System.out.println("count: " + map.get("count"));
System.out.println("pageSize: " + map.get("pageSize"));
}
复制

统计命中条数 按页号与行数返回数据 根据入参条件筛选数据
/**
* 分页条件查询
* @param pageConut 页数
* @param pageSize 行数
* @param gender 性别
* @return
*/
@Override
public Map pageHerosByGender(int pageConut, int pageSize, String gender){
Map data = new HashMap();
Query query =new Query();
query.addCriteria(new Criteria("gender").is(gender));
// 统计总行数
long count = mongoTemplate.count(query, Hero.class);
Pageable pageable = PageRequest.of(pageConut,pageSize);
query.with(pageable);
List<Hero> heroes = mongoTemplate.find(query,Hero.class);
data.put("pageConut",pageConut);
data.put("pageSize",pageSize);
data.put("count",count);
data.put("data",heroes);
return data;
}
复制
/**
* 分页条件查询 测试用例
* @return
*/
@Test
void pageHerosByGender(){
Map map= heroService.pageHerosByGender(1,3,"男");
System.out.println("pageConut: " + map.get("pageConut"));
System.out.println("data: " + map.get("data"));
System.out.println("count: " + map.get("count"));
System.out.println("pageSize: " + map.get("pageSize"));
}
复制

文章转载自左羊公社,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
墨天轮个人数说知识点合集
JiekeXu
328次阅读
2025-04-01 15:56:03
从Percona 发布Pro级产品得到的一些启发
库海无涯
95次阅读
2025-03-26 08:45:23
眼见高楼起,眼见高楼塌,MySQL的好日子到头了
AustinDatabases
83次阅读
2025-03-20 09:50:37
搞 PostgreSQL多才多艺的人--赵渝强 《PG数据库实战派》
AustinDatabases
53次阅读
2025-03-31 10:00:51
让数据先“活”起来,如何实现数据在企业中的最大价值
Roger的数据库专栏
48次阅读
2025-03-25 10:37:58
数据库界的“申公豹”,带云DBA走出--救生筏困境!
AustinDatabases
37次阅读
2025-03-28 14:57:16
让数据先“活”起来,如何实现数据在企业中的最大价值
小周的数据库进阶之路
37次阅读
2025-03-24 09:42:45
AI 能替代DBA吗,我好焦虑,你焦虑个屁!!!
AustinDatabases
37次阅读
2025-03-18 10:46:01
开源数据库 Licensing 定义的 “烦人” 原因? (译)
AustinDatabases
36次阅读
2025-03-25 18:14:38
腾讯云与MongoDB战略合作升级,瞄准AI时代的数据管理服务
腾讯云数据库
35次阅读
2025-03-21 10:34:16