spring结合mongodb增删改的基本操作


## is查询  这是按明确条件查询

例如:要查询名字为Eric的记录
Query query=new Query();
query.addCriteria(Criteria.where("name").is("Eric"));
User users=mongoTemplate.findOne(query,User.class); //返回一天记录,没有记录就回返回null


## 多个条件组合查询

例如:查询name=Eric and age=27

Query query=new Query();
query.addCriteria(Criteria.where("name").is("Eric").and("age").is("27")));

List list=mongoTemplate.find(query,User.class);

例如:查询name=Eric or name=Arriy
Query query=new Query();
query.addCriteria(new Criteria.orOperator(Criteria.where("name").is("Eric"),Criteria.where("name").is("Arriy")));
List list=mongoTemplate.find(query,User.class);


## find查询返回指定的字段值

queryBuilder.or()  是条件查询,是查询name=Eric or name=Arriy
fieldsObject.put(key, value)   key表示要返回的字段,key为1就是要返回这个字段,其它的字段的值返回都是空,其中_id 这个字段都回返回,除非特定设置了fieldsObject.put("_id", 0),这就不会返回了
QueryBuilder queryBuilder = new QuerBuilder();
queryBuilder.or(new BasicDBObject("name","Eric"),new BasicDBObject("name","Arriy"));
BasicDbObject fieldsObject = new BasicDBObject();
fieldsObject.put("name",1);
fieldsObject.put("age",1);
Query query=new BasicQuery(queryBuilder.get(), fieldsObject);

List list=mongoTemplate.find(query, User.class);

返回几个特定的字段的另外一种写法
Query query=new Query(Criteria.where("tel").is(param));
query.fields().include("person.name").include("like");
mongoTemplate.find(query, Dhh.class);

## regex查询 相当于sql中的模糊查询

例如: 查询名字以A开头的所有用户
Query query=new Query();
query.addCriteria(Criteria.where("name").regex("^A"));
List users = mongoTemplate.find(query,User.class);
例如:查询名字以C结尾的所有用户
Query query=new Query();
query.addCriteria(Criteria.where("name").regex("c$"));
List users=mongoTemplate.find(query, User.class);

## lt(小于)和gt(大于)查询

例如:查询年龄在20岁到50岁之前的用户
Query query=new Query();
query.addCriteria(Criteria.where("age").lt(50).gt(20));
List users= mongoTemplate.find(query, User.class);

## sort对结果进行排序

例如:对年龄进行升序排列
Query query=new Query();
query.with(new Sort(Sort.Direction.ASC, "age"));
List users=mongoTemplate.find(query, User.class);


## 分页的查询

例如 只显示一页,每页2两个记录
final Pageable pageableRequest = new PageRequest(0,2);
Query query= new Query();
query.with(pageableRequest);
List users=mongoTemlate.find(query, User.class);


## 插入记录

monogoTemplate.save(user);
monogoTemplagte.insert(user);
说明:
    当user对象中包含主键"_id" 此时用inser方法回报主键重复,用save方法会更新“_id"对应的记录
    当user对象中没有主键”_id" 此时inser和save方法都会增加一条记录

## 根据id删除记录

monogoTemplate.deleteById(object id);
删除对象操作
monogoTemplate.delete(User user);
根据条件删除
Query query=new Query(Criteria.where("_id").is(id));
mongoTemplate.remove(query,AutomaticAlarm.class);  

## 修改满足条件的第一条记录

Query query=new Query(Criteria.where("_id").is(id));
Update update = Update.update("要更新的字段", "更新的值");
mongoTemplate.updateFirst(query, update, Object.class);
修改满足条件的所有记录
monogoTemplate.updateMulti(query,update, User.class);
符合条件时修改,不存在符合条件的记录则添加
mongoTemplate.Upsert(query, update, User.calss);











你可能感兴趣的:(spring结合mongodb增删改的基本操作)