Docker 安装 mongo
- 拉取镜像
docker pull mongo:4.4
- 查看镜像
docker images
- 启动容器
docker run -itd
-v /docker_volume/mongodb/data:/data/db \
-p 27017:27017 mongo:4.4
- 登录 mongo 容器,并进入到 [admin] 数据库
docker exec -it mongo mongo admin
- 创建一个用户, mongo默认没用户
db.createUser({ user:'root',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},'readWriteAnyDatabase']});
【user:'root'】:设置用户名为root
【pwd:'123456'】:设置密码为123456
【role:'userAdminAnyDatabase'】:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
【db: 'admin'】:可操作的数据库
【'readWriteAnyDatabase'】:赋予用户读写权限
测试连接
- 连接 mongo 数据库
db.auth('root','123456');
- 测试 mongo 数据库,插入一条语句
db.user.insert({"name":"zhangsan","age":18});
- 测试 mongo 数据库, 查询刚插入的数据
db.user.find();
SpringBoot 继承 MongoDB
- 准备一个SpringBoot项目,导入 pom 依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
<version>2.3.9.RELEASE</version>
</dependency>
- 添加 yml 文件配置
spring:
data:
mongodb:
authentication-database: admin
host: 127.0.0.1
port: 27017
database: test
username: root
password: '123456'
- 编写实体类
@Data
@AllArgsConstructor
@NoArgsConstructor
@Document(value = "tb_person")
public class Person {
@Id
private ObjectId id;
@Field("person_name")
private String name;
private int age;
private String address;
}
- 编写测试类
@SpringBootTest
public class mongoDBTest {
@Resource
private MongoTemplate mongoTemplate;
@Test
public void find() {
Criteria criteria = Criteria.where("age").lt(30)
.and("person_name").is("张三");
Query query = new Query(criteria);
List<Person> list = mongoTemplate.find(query, Person.class);
for (Person person : list) {
System.out.println(person);
}
}
@Test
public void findPage() {
Criteria criteria = Criteria.where("age").lt(30)
.and("person_name").is("张三");
Query queryCount = new Query(criteria);
long count = mongoTemplate.count(queryCount, Person.class);
Query queryLimit = new Query(criteria)
.with(Sort.by(Sort.Order.desc("age")))
.limit(2)
.skip(2);
List<Person> list = mongoTemplate.find(queryLimit, Person.class);
for (Person person : list) {
System.out.println(person);
}
}
@Test
public void update() {
Criteria criteria = Criteria.where("person_name").is("王五");
Query query = new Query(criteria);
Update update = new Update();
update.set("age", 16);
mongoTemplate.upsert(query, update, Person.class);
}
@Test
public void save() {
Person person = new Person();
person.setName("李四");
person.setAge(20);
mongoTemplate.save(person);
}
@Test
public void dlete() {
mongoTemplate.remove(Query.query(Criteria.where("person_name").is("张三")), Person.class);
}
- 运行测试类的 save() 方法,进入数据库查看数据


【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!