Java中使用Mongodb查询语句

更新时间:2023-07-01 00:32:53 阅读: 评论:0

Java中使⽤Mongodb查询语句
best day of my life基本查询语句:
//
Criteria cri =new Criteria();
//另⼀种⽅式,为query加⼊cri,在query实例化的时候为其赋值
adjustment
//new Query(criatira)
//new Query(Criteria.where("id").is(id))
//MongoTemplate().find(new Query(), clazz);
Query query=new Query();
query.addCriteria(cri);
MongoTemplate().find(query, Model.class);
石家庄职业培训
当有多个查询条件时,我们需要构造Criteria[]数组,两种⽅式:
1. 直接赋值,这种⽅式缺点在于每⼀条查询语句中,只能够赋值⼀次,意思就是,在声明Criteria[]数组的时候,就必须进⾏赋值,后⾯
的操作就不可再进⾏赋值。如下例⼦:
Criteria cri =new Criteria();
Criteria[] cri1 = {Criteria.where("score").lte(max),Criteria.where("creditScored").gte(min)};
cri.andOperator(cri1);
2. 通过List⽅式添加条件,这种⽅式可以⼀个条件⼀个条件的依次添加,多⽤于对条件进⾏筛选的时候使⽤。如下例⼦:
List<Criteria> condition=new LinkedList<Criteria>();
if(!StringUtils.isEmpty(id)){
condition.add(Criteria.where("id").is(id));
}
if(!StringUtils.isEmpty(inputsName)){
condition.add(Criteria.where("inputName").regex(inputsName));
}
condition.add(Criteria.where("isDelete").is(1));
Criteria[] Array(new Criteria[condition.size()]);
注意:这两种⽅式产⽣的原因是,数组在声明的时候,必须为其分配内存,必须指定其长度,⽽且List的长度则是可以变化的。在查询条件确定的时候,采⽤数组形式;在查询条件需要判断的时候,采⽤List形式。
Criteria语句的常⽤法
⼤于⼩于: ⼤于(gt) ⼩于(lt) ⼤于等于(gte) ⼩于等于(lte)
Criteria.where("score").lte(max),Criteria.where("score").gte(min)
//连在⼀起写
Criteria.where("score").lte(max).gte(min)
不存在某个字段
Criteria.where("urTitle").ne(null)
不等于:
//urName不等于空look forward to
Criteria.where("urName").ne("");
模糊查询:
Criteria.where("number").regex(number)
根据字段排序:
query.with(new Sort(new Order(Direction.DESC,String))); //倒序
query.with(new Sort(new Order(Direction.ASC,String))); //顺序
or(与sql中的or同样的):
//该⽅法不是Criteria的静态⽅法,必须使⽤对象实例调⽤
Criteria criatira = new Criteria()
alevel选课指南
//第⼆种
new Criteria().orOperator(Criteria.where("updateStatus").is(-1),
Criteria.where("updateStatus").is(2))};
and(与sql中的and同样的):
Criteria criatira = new Criteria();
criatira.andOperator(cri);
/
/同时加⼊多个:
criteria.andOperator(criteriaA,criteriaB,criteriaC,criteriaD);
//错误写法:⼀个查询语句中,不能出现两个criteria.andOperator()⽅法,or⽅法也⼀样
乱交criteria.andOperator(criteriaA,criteriaB);
criteria.andOperator(criteriaC,criteriaD);
//加⼊数组
Criteria[] cri1 = {Criteria.where("score").lte(max),Criteria.where("creditScored").gte(min)};
criteria.andOperator(cri1);
补充⼀种:根据条件查询,并且返回指定列,加⼊排序
shut uppublic List<T> findSomeColumn(Map<String, Object> conditions,Map<String, Object> columns,
String sortStr,int how) throws Exception{
/
/BasicDBObject是BSON的⼦类,⽅法更加完善
//查询条件
BasicDBObject condition=new BasicDBObject();
for(Map.Entry<String, Object> entry : Set()) {
condition.Key(),Value());
}
//指定需要显⽰列晒黑后怎样快速美白
BasicDBObject key=new BasicDBObject();
for(Map.Entry<String, Object> entry : Set()) {northwestern
key.Key(),Value());
}
Query query=new BasicQuery(condition,key);
//根据某个字段排序,如果how=1就是desc,how=2就是asc
if(how==1){
query.with(new Sort(new Order(Direction.DESC,sortStr)));
}el{
query.with(new Sort(new Order(Direction.ASC,sortStr)));
}
return getMongoTemplate().find(query, clazz);
}
分组统计查询
这个例⼦可以加⼊查询筛选条件,加⼊分组依赖的字段,固定显⽰多少⾏数据(limit),根据某个字段进⾏排序,分组求和等。
public JSONArray GroupByTempName(String enterpriId)throws Exception {
// TODO Auto-generated method stub
//加⼊查询筛选条件
BasicDBObject matherTimer=new BasicDBObject("enterpriObj.$id",new ObjectId(enterpriId));//因为enterpriObj对象加了@DBRef标签
//多个条件
//  DBObject queryObject2 = new BasicDBObject();
//  BasicDBObject queryObject1=new BasicDBObject("uploadTime", new BasicDBObject("$gte",startTime+" 00:00:00").append("$lte",endTime+" 23:59:59") );
//        if (!StringUtils.isEmpty(enterpriId)) {
//        queryObject2 = queryObject1.append("enterpriId", enterpriId);
//  }el {
//  queryObject2 = queryObject1;
a lot of
//  }
DBObject matcher1=new BasicDBObject("$match",matherTimer);
//加⼊分组条件
BasicDBObject groupId=new BasicDBObject();
groupId.append("tempName","$tempName");//分组字段  $tempName表⽰数据库字段  tempName字段为⾃定义名称字段,可以加⼊多组分组依据
DBObject groupEnterpriId=new BasicDBObject("_id",groupId);//_id为固定命名,不可更改
//groupEnterpriId.put("total", new BasicDBObject("$sum","$productAmount"));  //分组统计数据库字段$productAmount的和
//groupEnterpriId.put("batchTotal", new BasicDBObject("$sum",1));  //统计该组数据的总数,batchTotal为⾃定义字段名
DBObject  group1=new BasicDBObject("$group",groupEnterpriId);
//加⼊排序字段
//    BasicDBObject sortSimpleProductTotal=new BasicDBObject();
//    sortSimpleProductTotal.append("$sort",new BasicDBObject("_id.total",-1));  // _id指的是上⾯的id,不是数据库主键。  total是上⾯查询出来的字段//加⼊查询条数
//    BasicDBObject limitNum =new BasicDBObject("$limit",20);
List<DBObject>  list=(List<DBObject>)getMongoTemplate().getCollection("templateInfoData").aggregate(matcher1,group1).results();
//如果加了排序字段和查询条数,则使⽤下⾯的语句
//List<DBObject>  list=(List<DBObject>)getMongoTemplate().getCollection("batch").aggregate(matcher1,group1,sortSimpleProductTotal,limitNum).result s();
JSONArray dataArray =new JSONArray();
for(DBObject obj:list){
dataArray.add(obj);
}
return dataArray;
}

本文发布于:2023-07-01 00:32:53,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/163091.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:查询   条件   时候   字段
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图