package com.my;
import com.mongodb.BasicDBObject;
import com.mongodb.client.result.DeleteResult;
import com.mongodb.client.result.UpdateResult;
import com.my.entity.Users;
import org.apache.catalina.User;
import org.bson.types.ObjectId;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.regex.Pattern;
@Controller
public class MongoController {
@Autowired
private MongoTemplate mongoTemplate;
@Value("${spring.data.mongodb.collection}")
private String database;
/**
* 插入
* @param id
* @return
*/
@GetMapping("/insert/{id}")
@ResponseBody
public String insert(@PathVariable String id) {
Users users = new Users(id, "yyyy", System.currentTimeMillis(), "男", 111);
Users mydb = mongoTemplate.save(users, database);
return mydb.toString();
}
/**
* 根据Id 删除
*/
@GetMapping("/delete/{id}")
@ResponseBody
public String delete(@PathVariable String id) {
Query query = new Query();
query.addCriteria(Criteria.where("id").is(id));
DeleteResult remove = mongoTemplate.remove(query, Users.class);
return remove.toString();
}
/**
* 根据Id 查找数据
*/
@GetMapping("/get/{id}")
@ResponseBody
public String get(@PathVariable String id) {
Query query = new Query();
query.addCriteria(Criteria.where("id").is(id));
Users users = mongoTemplate.findOne(query, Users.class);
return users.toString();
}
/**
* 通过Id查询再 修改
*/
@GetMapping("/update/{id}/{name}/{age}")
@ResponseBody
public String update(@PathVariable String id ,@PathVariable String name,@PathVariable Integer age ) {
Query query = new Query();
query.addCriteria(Criteria.where("id").is(id));
Update update = new Update();
update.set("name", name);
update.set("age", age);
UpdateResult updateResult = mongoTemplate.updateFirst(query, update, Users.class);
return updateResult.toString();
}
/**
* 多条件复杂查询
*/
@GetMapping("/getListByCondition/{no}")
@ResponseBody
public List<Users> getListByCondition(@PathVariable Integer no) {//@RequestBody(required = false) Users users
Query query = new Query();
// 此处可进行模糊查询
Pattern pattern=Pattern.compile("^.*"+"a"+".*$", Pattern.CASE_INSENSITIVE);
query.addCriteria(Criteria.where("name").regex(pattern));
//此处可进行 age 范围查询
query.addCriteria(Criteria.where("age").gt(99).lt(200));
//此处通过 age 排序
query.with(new Sort(Sort.Direction.DESC, "age"));
query.skip((no-1)*1);// 当前页的索引
query.limit(1); // 每页的条数
List<Users> users1 = mongoTemplate.find(query, Users.class);
for (Users u : users1) {
System.out.println(u.toString());
}
return users1;
}
}
springboot中mongoTemplate操作
最新推荐文章于 2024-06-28 20:30:00 发布