pom.xml
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency>
application.properties:
spring.data.mongodb.uri=mongodb://localhost:27017/test
UserRepository:类似Jpa查询方式
public interface UserRepository extends MongoRepository<User, String> { List<User> findByName(String name); }
UserController:
添加操作
@RequestMapping("add") public String add() { User user = new User(); user.setName("sher"); user.setAge(11); return userRepository.save(user).toString(); }
更新操作
@RequestMapping("edit/{id}") public String edit(@PathVariable String id) { User user = userRepository.findOne(id); user.setName("sher_edit"); return userRepository.save(user).toString(); }
删除操作
@RequestMapping(value = "del/{id}", method = RequestMethod.DELETE) public void del(@PathVariable String id) { userRepository.delete(id); }
mongoTemplate操作:
mongoTemplate.save(user);//添加 Query query = new Query(Criteria.where("name").is("sher")); List<User> userList = mongoTemplate.find(query, User.class);//查询所有name是sher userList.forEach(System.out::println); User one = mongoTemplate.findOne(query, User.class);//单个结果查询操作 System.out.println("查询单个User:" + one.toString()); Update update = new Update().set("age", 24); User modify = mongoTemplate.findAndModify(query, update, User.class);//数据库更新了但是返回的是旧的对象 System.out.println("返回更新前对象:" + modify); Update update2 = new Update().set("age", 26); FindAndModifyOptions upsert = new FindAndModifyOptions().returnNew(true).upsert(true); User andModify = mongoTemplate.findAndModify(query, update2, upsert, User.class);//返回更新后对象 System.out.println("返回更新后对象" + andModify); // mongoTemplate.updateFirst(query, update, User.class);//进行第一条符合要求的数据更新 // mongoTemplate.updateMulti(query, update, User.class);//进行更新多行数据 // mongoTemplate.remove(user);//进行数据删除
注意:upsert(true),update和insert结合体默认为false,当它为true的时候,update方法会首先查找与第一个参数匹配的记录,在用第二个参数更新之,如果找不到与第一个参数匹配的的记录,就插入一条
后台打印结果:
User{id='58e846a758717a2878845638', name='sher', age=33} User{id='58e855e958717a1a202a645f', name='sher', age=11} User{id='58e8583358717a2c58077fea', name='sher', age=11} User{id='58e858c858717a1b343b4132', name='sher', age=11} User{id='58e85a4e58717a2e50a577c1', name='sher', age=11} 查询单个User:User{id='58e846a758717a2878845638', name='sher', age=33} 返回更新前对象:User{id='58e846a758717a2878845638', name='sher', age=33} 返回更新后对象User{id='58e846a758717a2878845638', name='sher', age=26}
还有更多方法具体参照api