一.服务器安装MongoDB
使用docker拉取MongoDB镜像
docker pull mongo
创建容器
docker create --name mongodb -p 27017:27017 -v /data/mongodb:/data/db mongo
启动容器
docker start mongodb
进入Mongo容器
docker exec -it mongo /bin/bash
二.创建Springboot项目环境
pom依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
1.实体类对应mongodb字段
@Data
@Document("user")
public class User {
@Id
@Field("_id")
String id;
@Field("name")
String name;
@Field("age")
Integer age;
@Field("birthday")
String birthday;
}
2.编写service
@Service
public class UserDaoImpl implements UserDao {
@Resource
MongoTemplate mongoTemplate;
/**
* 查询所有用户信息
* @return
*/
@Override
public List<User> findAll() {
return mongoTemplate.findAll(User.class);
}
/**
* 根据名称查询用户信息
* @param name
* @return
*/
@Override
public List<User> findByName(String name) {
Criteria criteria=new Criteria();
criteria.and("name").is(name);
Query query=new Query(criteria);
return mongoTemplate.find(query,User.class);
}
/**
* 根据名称删除信息
* @param name
* @return
*/
@Override
public int findByNameRemove(String name) {
Criteria criteria=new Criteria();
criteria.and("name").is(name);
Query query=new Query(criteria);
DeleteResult remove = mongoTemplate.remove(query, User.class);
int i=(int) remove.getDeletedCount();
return i;
}
/**
* 添加用户
* @param user
* @return
*/
@Override
public User addUser(User user) {
return mongoTemplate.insert(user);
}
/**
* 更新用户信息
* @param user
* @return
*/
@Override
public int updateUser(User user) {
String id = findByName(user.getName()).get(0).getId();
Criteria criteria=new Criteria();
criteria.and("_id").is(id);
Query query=new Query(criteria);
Update update=new Update();
update.set("name",user.getName());
update.set("age",user.getAge());
update.set("birthday",user.getBirthday());
UpdateResult upsert = mongoTemplate.upsert(query, update, User.class);
int matchedCount = (int) upsert.getMatchedCount();
return matchedCount;
}
}