1. MongoDB的一些基本概念
- 官方介绍: mongodb是属于文档型的非关系型数据库,是开源、高性能、高可用、可扩展的
- 翻译成能听懂的就是:mongodb是nosql数据库,数据以key-value的形式文档是以BSON(binary json)格式存储的,其格式就是json格式,这类的数据库会用hash表生成特定的键,取值效率很高
- 与mysql的对比
- mongodb中一个document对应mysql中的一行数据,document里可以包含多种类型的field,可以是日期、数字等,也可以是数组,还可以内嵌别的文档
- document支持的数据类型如下
- mongoDB的使用场景
MongoDB 的适用场景为:数据不是特别重要(例如通知,推送这些),数据表结构变化较为频繁,数据量特别大,数据的并发性特别高,数据结构比较特别(例如地图的位置坐标),这些情况下推荐使用 MongoDB
MongoDB数据存在内存,由linux系统mmap实现,当内存不够时,只将热点数据放入内存,其他数据存在磁盘。
2. Linux安装配置MongoDB(单机版)
- MongoDB下载地址
- 将下载好的 mongodb-linux-x86_64-4.0.13.tgz文件上传到云服务器
- 创建mongodb目录并解压文件到目录下
- tar -zxvf mongodb-linux-x86_64-4.0.13.tgz -C /tools/mongodb
- 进入文件夹 创建数据目录db 日志目录logs 配置文件mongodb.conf
- mongodb.conf 配置如下
#数据存放目录
dbpath = /tools/mongodb/mongodb-linux-x86_64-4.0.13/db
#日志文件存放目录
logpath = /tools/mongodb/mongodb-linux-x86_64-4.0.13/logs/mongodb.log
#端口
port = 27017
#以守护线程的方式启用,即在后台运行
fork = true
#日志输出方式,使用追加的方式写日志
logappend = true
#PID File 的完整路径,如果没有设置,则没有PID文件
pidfilepath = /tools/mongodb/mongodb-linux-x86_64-4.0.13/mongo.pid
#关闭http接口,默认关闭27018端口访问
#nohttpinterface = true
#可以访问的地址. 127.0.0.1表示自己访问, 0.0.0.0 表示所有人都能访问
bind_ip = 0.0.0.0
#声明这是一个集群的分片,默认端口是27018
shardsvr = true
#设置每个数据库将被保存在一个单独的目录
#directoryperdb = true
#开启认证
#auth = true
#设开启简单的rest API,置后打开28017网页端口
#rest = true
- #bin目录下 启动MongoDB服务
./mongod --config /tools/mongodb/mongodb-linux-x86_64-4.0.13/mongodb.conf
- #bin目录下 停止MongoDB服务
./mongo 127.0.0.1:27017/admin --eval “db.shutdownServer()”
- 使用navicat连接mongoDB
3.springboot项目集成MongoDB
- 导入mongodb连接驱动
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver-sync</artifactId>
<version>4.0.3</version>
</dependency>
- 这里只是简单测试查询和删除数据
@Test
public void test1(){
MongoClient mongoClient = MongoClients.create("mongodb://服务器ip:27017");
MongoDatabase database = mongoClient.getDatabase("mytest");
MongoCollection<Document> collection = database.getCollection("student");
Document document = new Document();
document.append("username","张三").append("intro","左右为难");
// 插入入一条数据
collection.insertOne(document);
// 查询所有数据
FindIterable<Document> documents = collection.find();
documents.forEach(doc -> {
System.out.println(doc);
});
}
- 删除数据
@Test
public void test1(){
MongoClient mongoClient = MongoClients.create("mongodb://服务器ip:27017");
MongoDatabase database = mongoClient.getDatabase("mytest");
MongoCollection<Document> collection = database.getCollection("student");
Document document = new Document();
document.append("username","张三");
// 插入入一条数据
collection.deleteOne(document);
// 查询所有数据
FindIterable<Document> documents = collection.find();
documents.forEach(doc -> {
System.out.println(doc);
});
}