java执行mongodb语句_mongodb常用语句以及SpringBoot中使用mongodb

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架构师必看 对观点赞同或支持。如需转载,请注明文章来源。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值