db.getCollection(service_station).find({number数据库
普通查询
db.getCollection('map_area').find({"type":"3"})
db.map_area.find({"type":"3"})
找出非空
db.getCollection('表').find({"字段":{$exists:true}});
查_id需要注意
db.map_area.find({"_id":ObjectId("5811c104dd908725398b5XXX")})
mongodb原生正则查询
任意匹配
db.getCollection('service_station').find({"description":/玉兰小区/});
前缀
db.getCollection('service_station').find({"description":/^玉兰/});
加i兼容大小写
db.getCollection('service_station').find({"station_area":/EC/i});
spring MongoDB
//等效
criteria.andOperator(criteria.where("name").regex(".*" + v + ".*"));
criteria.andOperator(criteria.where("name").regex(".*\\" + v + "\\.*"));
criteria.andOperator(criteria.where("name").regex(".*?" + v + ".*"));
//前缀查询
criteria.andOperator(criteria.where("name").regex(".*^" + v + ".*"));
条件查询
//完全匹配
Pattern pattern = Pattern.compile("^商品$", Pattern.CASE_INSENSITIVE);
//右匹配
Pattern pattern = Pattern.compile("^.*商品$", Pattern.CASE_INSENSITIVE);
//左匹配
Pattern pattern = Pattern.compile("^商品.*$", Pattern.CASE_INSENSITIVE);
//模糊匹配
Pattern pattern = Pattern.compile("^.*商品.*$", Pattern.CASE_INSENSITIVE);
Query query = Query.query(Criteria.where(fieldName).regex(pattern));
List users = mongoTemplate.find(query, SimpleUserInfo.class, classname);
返回指定字段
只返回address,不要id。注意前面的{}不可少
db.getCollection('user').find({},{address:1,_id:0})
数字查询mongodb原生语句
db.getCollection('表').find({"number": {$regex: '76', $options:'i'}});
Java代码同时多条件or查询
Pattern pattern = Pattern.compile(search, Pattern.CASE_INSENSITIVE);
criteria.orOperator(criteria.where("name").regex(".*?\\" + search + ".*"),
criteria.where("number").regex(pattern));
查询大于某个字段长度的列表
db.getCollection('表').find({"字段": {"$exists": true, "$regex": /^.{5,}$/}}).limit(5)
更新数据
db.t1.updateOne({"_id":ObjectId("523eb382d7f8b9ac3b18b4571")},
{"$set":{"name":"XXX1"}})
Query query = Query.query(Criteria.where("_id").is("53eb382d7f8b9ac3b18b4574"));
Update update = Update.update("_id", "53eb382d7f8b9ac3b18b4574").set("name","xxx22").set("description","xxxx22");
in查询
原生语句
in查询
db.getCollection('service_station').find({$or:[{number:"01"},{number:"02"}]})
db.getCollection('service_station').find({$or:[{number:"01"},{number:"02"},{status:1}]})
spring中MongoTemplate
Query query = new Query();
Criteria criteria = new Criteria();
if (condition.getType().equals("in")) {
List v = Arrays.asList(condition.split(","));
criteria.andOperator(criteria.where("name").in(v));
}
query.addCriteria(criteria);
多条件查询or
Criteria c1= Criteria.where("name").is("XXX");
Criteria c2= Criteria.where("number").is("01");
Criteria cr = new Criteria();
Query query = new Query();
query.addCriteria(cr.orOperator(c1,c2));
and
query.addCriteria(cr.andOperator(c1,c2));
动态拼凑Criteria
Query query = new Query();
Criteria cr = new Criteria();
List criteriaList=new ArrayList<>();
//这里可以写for循环
Criteria c1= Criteria.where("name").is("XXX");
criteriaList.add(c1);
Criteria c2= Criteria.where("number").is("01");
criteriaList.add(c2);
if(criteriaList.size()>0) {
Criteria[] criteriaArray = criteriaList.toArray(new Criteria[criteriaList.size()]);
cr.andOperator(criteriaArray);
}
query.addCriteria(cr);
if (select != null && select.size() > 0) {
for (String tmp : select) {
query.fields().include(tmp);
}
}
List list = mongoOperations.find(query, clazz);
分页
//当前第0页,每页2条
query.skip((0);
query.limit(2);
Criteria c1=null;
Criteria c2=null;
Criteria c3=null;
ArrayList list=new ArrayList();
if (vo.getCatalog1()!=null){
c1 = Criteria.where(MyBean.FILD_CATALOG1).is(vo.getCatalog1());
list.add(c1);
}
if (vo.getCatalog()!=null){
c2=Criteria.where(MyBean.FILD_CATALOG).is(vo.getCatalog());
list.add(c2);
}
if (vo.getTitle()!=null){
//模糊查询
c3=Criteria.where(MyBean.FILD_TITLE).regex(".*?\\" +vo.getTitle()+ ".*");
list.add(c3);
}
Criteria[] arr=new Criteria[list.size()];
list.toArray(arr);
Criteria criteria=new Criteria().andOperator(arr);
Query query=new Query(criteria);
query.skip((vo.getPage()-1)*vo.getPageSize());
query.limit(vo.getPageSize());
List list= mongoTemplate.find(query, MyBean.class);
return list;
分页排序
//分页和排序
if (simplePageRequest.getPage() != null && simplePageRequest.getRows() != null) {
query.skip(simplePageRequest.getPage() - 1);
query.limit(simplePageRequest.getRows());
}
if (simplePageRequest.getSort() != null && simplePageRequest.getOrder() != null) {
Sort.Direction SortDirection;
if (simplePageRequest.getSort().toLowerCase().equals("asc")) {
SortDirection = Sort.Direction.ASC;
} else {
SortDirection = Sort.Direction.DESC;
}
Sort sort = new Sort(SortDirection, simplePageRequest.getOrder());
query.with(sort);
}
说明:多个排序参数
Sort sort = new Sort(Sort.Direction.ASC, “ID”).and(new Sort(Sort.Direction.ASC, “TIME”));
本文由来源 21aspnet,由 system_mush 整理编辑,其版权均为 21aspnet 所有,文章内容系作者个人观点,不代表 Java架构师必看 对观点赞同或支持。如需转载,请注明文章来源。