MongoDB的简单使用

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
日志服务 SLS,月写入数据量 50GB 1个月
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介: MongoDB使用java代码的简单增删改查操作

MongoDB的简单使用

1.MongoDB简介

MongoDB 是一个基于分布式文件存储的 NoSQL 数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。关于什么是 NoSQL 可阅读《学了那么多 NoSQL 数据库 NoSQL究竟是啥》

MongoDB 是一个介于关系型数据库和非关系型数据库之间的产品,是非关系型数据库当中功能最丰富,最像关系数据库的。

2.MongoDB和关系型数据库的对比

关系型数据库

mongodb

database(数据库)

database(数据库)
table(表)

collection(集合)

row(行)

document or BSON document(文档)

column(列)

field(字段)

index(索引)

index(索引)

table joins(表连接)

embedded documents and linking(嵌入的文档和链接)

primary key Specify any uniquecolumn or column combination asprimary key.(指定任意唯一的列或列组合作为主键)

primary keyIn MongoDB, the primary keyisautomatically set to the _id field.(在 MongoDB中,主键被自动设置为 _id 字段)

3.MongoDB 数据类型

数据类型

描述

Object ID

Documents 自生成的 _id

String

字符串,必须是utf-8

Boolean

布尔值,true 或者false

Integer

Integer:整数 (Int32 Int64 一般我们用Int32)

Double

浮点数 (没有float类型,所有小数都是Double)
Arrays

数组或者列表,多个值存储到一个键

Object

Object

Null

空数据类型 , 一个特殊的概念,None Null

Timestamp

时间戳

Date

存储当前日期或时间 unix时间格式

4.安装MongoDB

官网下载地址:https://www.mongodb.com/try/download/community

下载步骤.png

我这里下载的是Linux最新版的。

解压一下

# 解压 mongodb 至指定目录tar -zxvf /root/mongodb/mongodb-linux-x86_64-rhel80-5.0.5.tgz -C /usr/local/
# 重命名解压目录为 mongodbmv /usr/local/mongodb-linux-x86_64-rhel80-5.0.5/  /usr/local/mongodb

安装过程.png

创建数据和日志存放目录

# 创建储存数据的目录mkdir-p /usr/local/mongodb/data/db
# 创建储存日志的目录mkdir-p /usr/local/mongodb/logs
# 创建日志文件touch /usr/local/mongodb/logs/mongodb.log

bin目录下增加配置文件

# 数据文件储存目录dbpath = /usr/local/mongodb/data/db
# 日志文件储存目录logpath = /usr/local/mongodb/logs/mongodb.log
# 以追加的方式记录日志logappend =true# 端口默认为 27017port =27017# 对访问 IP 地址不做限制,默认为本机地址bind_ip =0.0.0.0
# 以守护进程的方式启用,即在后台运行fork =true

mongodb目录下启动目录下通过配置文件启动

#启动bin/mongod -f bin/mongodb.conf
#关闭bin/mongod -f bin/mongodb.conf --shutdown

配置及启动.png

这样就启动完成了

远程连接的时候记得开放端口 不然链接不上

开放端口.png

5.java代码操作MongoDB

引入依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId></dependency>

配置mongodb

spring:  data:    mongodb:      database: db1
      host: 106.14.226.10      port: 27017#因为没有设置校验所以不用填写账号和密码 自己使用的时候记得出创建账号添加校验#大家也可以直接连我这个测试(开放一个月)

创建一个测试对象

@Data@Document("student")//这里填collection的名称publicclassStudent {
@IdprivateStringid;
privateStringname;
privateIntegerage;
}

编写测试类

@SpringBootTest(classes= {MogodbApplication.class})
publicclassmongoDBTest {
@AutowiredprivateMongoTemplatemongoTemplate;
@Testpublicvoidtest(){
    }
}


1.新增

Studentstudent=newStudent();
student.setName("张三");
student.setAge(24);
mongoTemplate.insert(student);


mongoTemplet添加的会有一个_class字段 如果不想有这个字段可以写一个config

@ConfigurationpublicclassMongoConfigimplementsApplicationListener<ContextRefreshedEvent> {
@AutowiredMongoTemplatemongoTemplate;
@OverridepublicvoidonApplicationEvent(ContextRefreshedEventcontextRefreshedEvent) {
MongoConverterconverter=mongoTemplate.getConverter();
if (converter.getTypeMapper().isTypeKey("_class")) {
            ((MappingMongoConverter) converter).setTypeMapper(newDefaultMongoTypeMapper(null));
        }
    }
}

2.查询

排序

Queryquery=newQuery();
query.with(Sort.by("age").descending());
List<Student>students=mongoTemplate.find(query, Student.class);

精确查询

Queryquery=newQuery();
query.addCriteria(Criteria.where("name").is(name));
List<Student>students=mongoTemplate.find(query, Student.class);

模糊查询

Patternpattern=Pattern.compile("^.*"+name+".*$", Pattern.CASE_INSENSITIVE);
Queryquery=newQuery();
query.addCriteria(Criteria.where("name").regex(pattern));
List<Student>students=mongoTemplate.find(query, Student.class);

范围查询

//gte : >= ; lte  <= ; gt : > ; lt : <
Queryquery=newQuery();
query.addCriteria(Criteria.where("age").gte(20).lte(23));
List<Student>students=mongoTemplate.find(query, Student.class);

分页查询

Queryquery=newQuery();
query.addCriteria(Criteria.where("age").gte(20).lte(23));
longtotal=mongoTemplate.count(query, Student.class);
query.limit(pageSize).skip(PageSize*(pageNum-1))
List<Student>students=mongoTemplate.find(query, Student.class);

多条件查询

Queryquery=newQuery();
query.addCriteria(Criteria.where("name").is("张三").and("age").is(23));
List<Student>students=mongoTemplate.find(query, Student.class);

单条查询

Studentstudent=mongoTemplate.findOne(query, Student.class);

3.更新

Queryquery=newQuery();
//把名字是张三的改成李四query.addCriteria(Criteria.where("name").is("张三"));
Updateupdate=newUpdate();
update.set("name", "李四");
mongoTemplate.updateFirst(query, update, Student.class);

4.删除

Queryquery=newQuery();//删除名字是张三的数据query.addCriteria(Criteria.where("name").is("张三"));
longdeletedCount=mongoTemplate.remove(query, Student.class).getDeletedCount();


相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。 &nbsp; 相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
NoSQL MongoDB 数据库
Mongodb的基本使用
Mongodb的基本使用
195 0
|
1月前
|
SQL NoSQL Java
springboot操作nosql的mongodb,或者是如何在mongodb官网创建服务器并进行操作
本文介绍了如何在Spring Boot中操作NoSQL数据库MongoDB,包括在MongoDB官网创建服务器、配置Spring Boot项目、创建实体类、仓库类、服务类和控制器类,以及如何进行测试。
17 1
springboot操作nosql的mongodb,或者是如何在mongodb官网创建服务器并进行操作
|
2月前
|
存储 NoSQL MongoDB
MongoDB使用方法
MongoDB使用方法
37 2
|
2月前
|
JavaScript 前端开发 NoSQL
MongoDB基本用法
MongoDB基本用法
20 6
|
5月前
|
存储 NoSQL MongoDB
MongoDB怎么用
【6月更文挑战第7天】MongoDB怎么用
41 1
|
6月前
|
存储 分布式计算 NoSQL
MongoDB的简介和安装(在服务器上)
MongoDB的简介和安装(在服务器上)
110 0
|
6月前
|
JSON NoSQL MongoDB
MongoDB详解(五)——MongoDB数据库简单使用
MongoDB详解(五)——MongoDB数据库简单使用
137 1
|
存储 JSON NoSQL
【mongo 系列】mongodb 学习二,mongodb 的基本使用梳理
• 文档 是 mongodb 的最小数据集单位,是多个键值对有序租户在一起的数据单元,类似于关系型数据库的记录
251 4
|
存储 NoSQL 关系型数据库
MongoDB基本介绍与安装(1)
MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。在这里我们有必要先简单介绍一下非关系型数据库(NoSQL)
1499 0
|
存储 NoSQL 关系型数据库
MongoDB入门(特点,使用场景,命令行操作,SpringData-MongoDB)
有的小伙伴可能就会问?哎呀,我去,这个MongoDB 这么牛的吗?