docker安装
安装:
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
测试 Docker 是否安装成功,输入以下指令,打印出以下信息则安装成功:
$ sudo docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete Digest: sha256:c3b4ada4687bbaa170745b3e4dd8ac3f194ca95b2d0518b417fb47e5879d9b5f
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
docker 安装mongo
取最新版的 MongoDB 镜像
$ docker pull mongo:latest
查看本地镜像
使用以下命令来查看是否已安装了 mongo:
$ docker images
4、运行容器
安装完成后,我们可以使用以下命令来运行 mongo 容器:
$ docker run -itd --name mongo -p 27017:27017 mongo --auth
参数说明:
- -p 27017:27017 :映射容器服务的 27017 端口到宿主机的 27017 端口。外部可以直接通过 宿主机 ip:27017 访问到 mongo 的服务。
- –auth:需要密码才能访问容器服务。
docker rm mongo #删除mongo容器
5、安装成功
最后我们可以通过 docker ps 命令查看容器的运行信息:
接着使用以下命令添加用户和设置密码,并且尝试连接。
$ docker exec -it mongo mongo admin
# 创建一个名为 admin,密码为 123456 的用户。
> db.createUser({ user:'admin',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},"readWriteAnyDatabase"]});
# 尝试使用上面创建的用户信息进行连接。
> db.auth('admin', '123456')
https://www.runoob.com/docker/docker-install-mongodb.html
mongodb的基础操作可以看菜鸟教程
springboot+mongodb
MongoTemplate
1、引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.10.1</version>
</dependency>
2、 数据库设置
application.properties
# 应用名称
spring.application.name=demomongo
spring.data.mongodb.uri=mongodb://admin:123456@192.168.142.131:27017/?authSource=admin
spring.data.mongodb.database=test
#spring.data.mongodb.host=192.168.142.131
#spring.data.mongodb.port=27017
#spring.data.mongodb.username=admin
#spring.data.mongodb.password=123456
#spring.data.mongodb.authentication-database=admin
3、实体类
package com.zyz.entity;
import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
@Data
@Document("user")
public class User {
@Id
private String id;
private String name;
private Integer age;
private String email;
private String createDate;
}
4、测试类
package com.zyz;
import com.mongodb.client.result.DeleteResult;
import com.mongodb.client.result.UpdateResult;
import com.zyz.entity.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
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 java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Pattern;
@SpringBootTest
class DemomongoApplicationTests {
@Autowired
private MongoTemplate mongoTemplate;
//添加
@Test
public void createUser() {
User user = new User();
user.setAge(20);
user.setName("test");
user.setEmail("4932200@qq.com");
User user1 = mongoTemplate.insert(user);
System.out.println(user1);
}
@Test
public void findUser() {
List<User> users = mongoTemplate.findAll(User.class);
System.out.println(users);
}
//根据id查询
@Test
public void getById() {
User user =
mongoTemplate.findById("61e779eafeab800b0f9e8da9", User.class);
System.out.println(user);
}
@Test
public void findUserList() {
Query query = new Query(Criteria
.where("name").is("nana")
.and("age").is(21));
List<User> userList = mongoTemplate.find(query, User.class);
System.out.println(userList);
}
//模糊查询
@Test
public void findUsersLikeName() {
String name = "est";
String regex = String.format("%s%s%s", "^.*", name, ".*$");
Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
Query query = new Query(Criteria.where("name").regex(pattern));
List<User> userList = mongoTemplate.find(query, User.class);
System.out.println(userList);
}
//分页查询
@Test
public void findUsersPage() {
String name = "est";
int pageNo = 1;
int pageSize = 10;
Query query = new Query();
String regex = String.format("%s%s%s", "^.*", name, ".*$");
Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
query.addCriteria(Criteria.where("name").regex(pattern));
int totalCount = (int) mongoTemplate.count(query, User.class);
List<User> userList = mongoTemplate.find(query.skip((pageNo - 1) * pageSize).limit(pageSize), User.class);
Map<String, Object> pageMap = new HashMap<>();
pageMap.put("list", userList);
pageMap.put("totalCount",totalCount);
System.out.println(pageMap);
}
//修改
@Test
public void updateUser() {
User user = mongoTemplate.findById("5ffbfa2ac290f356edf9b5aa", User.class);
user.setName("test_1");
user.setAge(25);
user.setEmail("493220990@qq.com");
Query query = new Query(Criteria.where("_id").is(user.getId()));
Update update = new Update();
update.set("name", user.getName());
update.set("age", user.getAge());
update.set("email", user.getEmail());
UpdateResult result = mongoTemplate.upsert(query, update, User.class);
long count = result.getModifiedCount();
System.out.println(count);
}
//删除操作
@Test
public void delete() {
Query query =
new Query(Criteria.where("_id").is("5ffbfa2ac290f356edf9b5aa"));
DeleteResult result = mongoTemplate.remove(query, User.class);
long count = result.getDeletedCount();
System.out.println(count);
}
}
db.user.find() #查看全部
{ "_id" : ObjectId("61e8d1c690104749e099d3e5"), "name" : "张三1", "age" : 21, "email" : "8090@qq.com", "_class" : "com.zyz.entity.User" }
{ "_id" : ObjectId("61e8d29c29b91660e6efda12"), "name" : "张三01", "age" : 21, "email" : "333322@qq.com", "_class" : "com.zyz.entity.User" }
MongoRepository
添加repository类
@Repository
public interface UserRepository extends MongoRepository<User,String> {
}
测试类
@SpringBootTest
public class DemoMongoApplicationTest1 {
@Autowired
private UserRepository userRepository;
//添加
@Test
public void createUser(){
User user = new User();
user.setAge(21);
user.setName("张三01");
user.setEmail("333322@qq.com");
User user1 = userRepository.save(user);
}
//查询所有
@Test
public void findAll(){
List<User> userList = userRepository.findAll();
System.out.println(userList);
}
//根据id查询
@Test
public void findUserById(){
User user = userRepository.findById("61e8d1c690104749e099d3e5").get();
System.out.println(user);
}
//条件查询
@Test
public void findUserList(){
User user = new User();
user.setName("张三");
user.setAge(20);
Example<User> userExample = Example.of(user);
List<User> userList = userRepository.findAll(userExample);
System.out.println(userList);
}
//模糊查询
@Test
public void findUsersLikeName(){
//创建匹配器
ExampleMatcher matcher = ExampleMatcher.matching() //构建对象
.withStringMatcher(ExampleMatcher.StringMatcher.CONTAINING) //改变默认字符串匹配方式,改为模糊查询
.withIgnoreCase(true);//设置忽略大小写
User user = new User();
user.setName("三");
Example<User> userExample = Example.of(user,matcher);
List<User> userList = userRepository.findAll(userExample);
System.out.println(userList);
}
//分页查询
@Test
public void findUsersPage(){
//根据年龄排序 倒叙
Sort sort = Sort.by(Sort.Direction.DESC, "age");
//0为第一页
PageRequest pageRequest = PageRequest.of(0, 10, sort);
//创建匹配器 即如何使用查询条件
ExampleMatcher matcher = ExampleMatcher.matching()//构建对象
.withStringMatcher(ExampleMatcher.StringMatcher.CONTAINING)
.withIgnoreCase(true);
User user = new User();
user.setName("三");
Example<User> userExample = Example.of(user,matcher);
Page<User> userPage = userRepository.findAll(userExample, pageRequest);
System.out.println(userPage);
}
//修改
@Test
public void updateUser(){
//根据id获取对象
User user = userRepository.findById("61e8d1c690104749e099d3e5").get();
// 修改
user.setName("张三1");
user.setAge(21);
user.setEmail("8090@qq.com");
//保存修改
User save = userRepository.save(user);
System.out.println(save);
}
//删除
@Test
public void deleteById(){
userRepository.deleteById("61e8d1c690104749e099d3e5");
}
}