springboot mongodb 基本文档查询(Query、BasicQuery)

https://blog.csdn.net/congcong68/article/details/47183209

本章关注查询指定返回值得部分

query查询语句的实现的方式有两种:

1.org.springframework.data.mongodb.core.query

参考另一个博客

 Query (Criteria criteria), Criteria是标准查询的接口,可以引用静态的Criteria.where的把多个条件组合在一起,就可以轻松地将多个方法标准和查询连接起来,方便我们操作查询语句。

例如: 查询条件onumber="002" 

mongoTemplate.find (new Query(Criteria.where("onumber").is("002")),entityClass)

多个条件组合查询时:

例如:onumber="002" and cname="zcy"  

mongoTemplate.find (new Query(Criteria.where("onumber").is("002").and("cname").is("zcy")),entityClass)

2、子类 org.springframework.data.mongodb.core.query.BasicQuery

  构造方法

         BasicQuery(DBObject queryObject)

         BasicQuery(DBObject queryObject, DBObject fieldsObject) 

         BasicQuery(java.lang.String query)

          BasicQuery(java.lang.String query, java.lang.String fields)

1> . BasicDBObject

例如:查询条件onumber="002"

      DBObject obj = new BasicDBObject();

      obj.put( "onumber","002" );

 Query query=new BasicQuery(obj);

2> . BasicDBList

 BasicDBList可以存放多个BasicDBObject条件

                       例如:我们查询onumber=002OR cname=zcy1

                         BasicDBList basicDBList=new BasicDBList();

                         basicDBList.add(new BasicDBObject("onumber","002"));

                         basicDBList.add(new BasicDBObject("cname","zcy1"));

                        DBObjectobj =newBasicDBObject();

                       obj.put("$or", basicDBList);

 Query query=new BasicQuery(obj);


 3. com.mongodb. QueryBuilder

QueryBuilder和BasicDBObject配合使用  QueryBuilder帮我们实现了  $and等操作符

          QueryBuilder queryBuildernewQueryBuilder(); 

         queryBuilder.or(new BasicDBObject("onumber","002"),newBasicDBObject("cname","zcy1")); 

        Query query=new BasicQuery(queryBuilder.get());


 4. BasicQuery查询语句可以指定返回字段,构造函数

             BasicQuery(DBObject queryObject, DBObject fieldsObject)

            fieldsObject 这个字段可以指定返回字段

            fieldsObject.put(key,value)

            key:字段

           value:

             说明:

                  1或者true表示返回字段

                 0或者false表示不返回该字段

               _id:默认就是1,没指定返回该字段时,默认会返回,除非设置为0是,就不会返回该字段。

               指定返回字段,有时文档字段多并数据大时,我们指定返回我们需要的字段,这样既节省传输数据量,减少了内存消耗,提高了性能,在数据大时,性能很明显的。

QueryBuilder queryBuilder = new QueryBuilder();   
queryBuilder.or(new BasicDBObject("onumber", "002"), new BasicDBObject("cname","zcy1"));   
BasicDBObject fieldsObject=new BasicDBObject();  
fieldsObject.put("onumber", 1);  
fieldsObject.put("cname", 1);  
uery query=new BasicQuery(queryBuilder.get(),fieldsObject);  
5. 字符串的形式

         BasicQuery(java.lang.String query)

          BasicQuery(java.lang.String query, java.lang.String fields)

格式{“”:“”}

可以讲DBObject .toJSON()转换字符串形式,就是{},然后调用上面的方法即可

此方式用于,在自己的网页中写mongodb语法查询,调用java后台


Spring Boot是一个用于构建基于Spring框架的应用程序的工具,而MongoDB是一种非关系型数据库。在Spring Boot应用程序中使用MongoDB进行分组查询非常简单,可以通过使用Spring Data MongoDB来实现。 首先,你需要在你的pom.xml文件中添加Spring Data MongoDB的依赖。然后,你需要创建一个MongoDB配置类,来配置MongoDB连接。 接下来,在你的Spring Boot应用程序中创建一个模型类,并使用@Document注解来指定该类将被映射到MongoDB集合。然后,你可以使用@Field注解来指定该类中的字段将被映射到MongoDB文档中的哪个字段。 对于分组查询,你可以使用Spring Data MongoDB提供的Aggregation框架。使用Aggregation框架,你可以构建一个管道(pipeline),其中包含一系列操作符(operators),用于执行各种聚合操作。例如,你可以使用$group操作符将文档按某个字段进行分组,并计算每个分组中文档的数量或其他统计数据。 下面是一个示例代码片段,展示了如何使用Spring Data MongoDB进行分组查询: ``` @Repository public class UserRepository { @Autowired private MongoTemplate mongoTemplate; public List<GroupResult> groupByAge() { Aggregation aggregation = Aggregation.newAggregation( Aggregation.group("age").count().as("count"), Aggregation.project("count").and("age").previousOperation() ); AggregationResults<GroupResult> groupResults = mongoTemplate.aggregate(aggregation, "user", GroupResult.class); return groupResults.getMappedResults(); } } @Data @NoArgsConstructor @AllArgsConstructor class GroupResult { private Integer age; private Long count; } ``` 在这个示例中,我们首先使用group操作符按照年龄字段进行分组,并计算每个分组中文档的数量。然后,我们使用project操作符来选择返回结果中的字段。最后,我们通过调用MongoTemplate的aggregate方法执行聚合操作,并将结果映射为GroupResult类的对象列表。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值