MongoDB

本文参考

(1条消息) MongoDB超详细教程(保姆级)_M-Codes的博客-CSDN博客_mongodb教程https://blog.csdn.net/efew212efe/article/details/124524863

1.介绍:

1.1 介绍

1.MongoDB是一个基于分布式文件存储的数据库
2.由C++语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案。
3.MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
4.它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。
5.Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引

1.2 业务应用场景

  • High performance:对数据库高并发读写的需求

  • Huge Storage:对海量数据的高效率存储和访问的需求

  • High Scalability && High Availability:对数据库的高可扩展性和高可用性的需求

这些应用场景中,数据操作方面的共同特点是:

(1)数据量大

(2)写入操作频繁(读写都很频繁)

(3)价值较低的数据,对事务性要求不高

对于这样的数据,我们更适合使用 MongoDB来实现数据的存储。

1.3 体系机构

在这里插入图片描述

1.4 数据类型

MongoDB的最小存储单位就是文档document对象。文档document对象对应于关系型数据库的行。数据在MongoDB中以BSON(Binary-JSON)文档的格式存储在磁盘上。

BSON(Binary Serialized Document Format)是一种类json的一种二进制形式的存储格式,简称 Binary JSON;BSON和JSON一样,支持内嵌的文档对象和数组对象,但是BSON有JSON没有的一些数据类型,如Date和Bin Data类型。

BSON采用了类似于C语言结构体的名称、对表示方法,支持内嵌的文档对象和数组对象,具有轻量性、可遍历性、高效性的三个特点,可以有效描述非结构化数据和结构化数据。这种格式的优点是灵活性高,但它的缺点是空间利用率不是很理想。

BSON中,除了基本JSON类型: string,integer,boolean,double,null,array和object,mongo还使用了特殊的数据类型。这些类型包括 date, object id, binary data, regular expression和code。每一个驱动都以特定语言的方式实现了这些类型,查看你的驱动的文档来获取详细信息

BSON数据类型参考列表:

在这里插入图片描述

 提示
shell默认使用64位浮点型数值。{“x”:3.14或{“x”:3}。对于整型值,可以使用NumberInt(4字节符号整数)或 NumberLong(8字节符号整数),{“x”:NumberInt(“3” ){“x”:NumberLong(“3”)}

2. Windows安装

2.1 安装

安装包及mongodb的命名格式: x.y.z

- y为奇数表示当前版本为开发版,如:1.5.2、4.1.13
- y为偶数表示当前版本为稳定版,如:1.6.3、4.0.10
- z为修正版本号,越大越好

MongoDB Community Download | MongoDBDownload the Community version of MongoDB's non-relational database server from MongoDB's download center.https://www.mongodb.com/try/download/community

 2.2 解压

下载完成后得到压缩包,解压;其中的bin目录就存放着mongodb相关的命令

2.3 安装服务

首先要在安装目录里创建两个目录:

  • 数据目录:data
  • 日志目录:logs

然后以管理员模式,切换到安装目录下的bin目录,运行以下格式命令来指定mongdb的数据及日志目录

注意整个文件的路径中不能包含中文,中文,中文!踩过坑!

mongod --install --dbpath 数据目录 --logpath 日志目录\日志名称 

实例

mongod --install --dbpath D:\mongodb\mongodb-win32-x86_64-windows-5.0.11\data --logpath D:\mongodb\mongodb-win32-x86_64-windows-5.0.11\logs/mongodb.logs

2.4 验证安装成功

没有任何报错和提示,则代表MongoDB服务创建成功

我们可以进行验证,win+r 输入services.msc

 看到MongoDB服务即成功

2.5 删除mongo服务

如果想要删除MongoDB服务的话

SC DELETE MongoDB

3.启动

输入以下命令启动服务

net start mongodb

 输入http://localhost:27017/如果看到以下内容,代表启动成功

 4.连接

navicat链接

Compass图形化连接登录(推荐)

MongoDB的GUI。直观地浏览您的数据。在几秒钟内运行查询。借助完整的CRUD功能与您的数据进行交互。查看和优化您的查询性能。在Linux,Mac或Windows上可用。Compass使您能够做出更明智的索引,文档验证等决策。

在这里插入图片描述

下载地址:MongoDB Compass Download | MongoDB

点击Download下载即可,下载完成后得到压缩包

在这里插入图片描述

 解压,可以看到MongoDBCompass.exe

在这里插入图片描述

双击运行,直接Next,最后Get Stated,默认选项即可

在这里插入图片描述

然后直接点击CONNECT就会连接本地的数据库localhost:27017

在这里插入图片描述

可以看到所有的数据库及相关信息

在这里插入图片描述

4、Linux安装&启动&连接

环境:阿里云服务器Centos7

1. 下载压缩包

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

选择对应的系统版本(这里为Centos7),以tgz的格式进行下载

2. 上传到服务器&解压

将下载得到的压缩包上传到服务器,这里使用xftp工具进行上传

tar -zxvf mongodb-linux-x86_64-rhel70-4.4.4.gz

 然后将解压后的文件移至usr/local/mongodb目录下,这是我们一般存放文件的位置

mv mongodb-linux-x86_64-rhel70-4.4.4 /usr/local/mongodb

3. 创建数据/日志存放目录

mkdir -p /usr/local/mongodb/data /usr/local/mongodb/logs

4. 启动服务

/usr/local/mongodb/bin/mongod --dbpath=/usr/local/mongodb/data/ --logpath=/usr/local/mongodb/logs/mongodb.log --logappend --port=27017 --fork

5. 登录退出

登录

/usr/local/mongodb/bin/mongo

退出

exit

5. 基本常用命令

1. 数据库相关

查看所有数据库

show databases

选择数据库(如果数据库不存在,不会报错;会隐式创建:当后期该数据库有数据时自动创建)

use 数据库名

删除数据库(先选中数据库)

db.dropDatabase()

2. 集合(类似于mysql中的表)相关

查看所有集合

show collections

创建集合(插入数据会隐式创建)

db.createCollection('集合名')

删除集合

db.集合名.drop()

6. CURD(文档操作)

集合存在则直接插入数据,不存在则隐式创建集合并插入数据

mongodb会自动给每条数据创建全球唯一的_id键(我们也可以自定义_id的值,只要给插入的json数据增加_id键即可覆盖,但是不推荐这样做

增:插入文档

插入一条

db.集合名.insert(json数据)


user0 = {
    "_id":ObjectId(),
    "name": "ymq",
    "age": 18,
    "hobby": ["read", "play"],
    "addr": {
        "country": "河南",
        "city": 89
    }
}

db.text.insert(user0)

插入多条

user0 = {
    "_id": ObjectId(),
    "name": "ymq",
    "age": 18,
    "hobby": ["read", "play"],
    "addr": {
        "country": "河南",
        "city": 89
    }
}

user1 = {
    "name": "ymq",
    "age": 18,
    "hobby": ["read", "play"],
    "addr": {
        "country": "河南",
        "city": 89
    }
}

user2 = {
    "name": "ymq",
    "age": 18,
    "hobby": ["read", "play"],
    "addr": {
        "country": "河南",
        "city": 89
    }
}

db.text.insertMany([user0, user1, user2])

save(有则修改,无则新增,根据id进行查)

db.tetx.save({"_id":3,"username":"xxx})

删:删除文档

alse删除多条,即全部删除(默认)

true删除一条

db.集合名.remove(条件 [,是否删除一条])

改:修改文档

新数据

  • 默认是对原数据进行替换
  • 若要进行修改,格式为 {修改器:{key:value}}

是否新增

  • 条件匹配不到数据时是否插入: true插入,false不插入(默认)

是否修改多条

  • 条件匹配成功的数据是否都修改: true都修改,false只修改一条(默认)
db.集合名.update(条件, 新数据 [,是否新增, 是否修改多条])

查:查询文档

db.集合名.find(条件 [,查询的列])
db.集合名.find(条件 [,查询的列]).pretty() #格式化查看

逻辑查询

成员运算

创建索引

db.集合名.createIndex(待创建索引的列:方式 [,额外选项])

创建复合索引

db.集合名.createIndex({key1:方式,key2:方式} [,额外选项])

参数说明:

待创建索引的列:方式:{key:1}/{key:-1}
1表示升序,-1表示降序; 例如{age:1}表示创建age索引并按照升序方法排列
额外选项:设置索引的名称或者唯一索引等
设置名称:{name:索引名}
唯一索引:{unique:列名}

删除全部索引

db.集合名.dropIndexes()

删除指定索引

db.集合名.dropIndex(索引名)

查看索引

db.集合名.getIndexes()

7.权限机制

介绍

介绍

安装完Mongodb后,在命令行输入mongo命令即可登录数据库,这肯定是不安全的,我们需要使用权限机制,开启验证模式

角色种类

超级用户角色:root
数据库用户角色:read、readWrite
数据库管理角色:dbAdmin、userAdmin
集群管理角色: clusterAdmin、clusterManager、clusterMonitor、hostManager
备份恢复角色: backup、restore
所有数据库角色: readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase

角色说明

root:只在admin数据库中可用。超级账号,超级权限;
read:允许用户读取指定数据库;
readWrite:允许用户读写指定数据库
开启验证模式
验证模式:用户需要输入账号密码才能登录使用

安装需要身份验证的服务

1.安装服务

mongod --install --dbpath 数据目录 --logpath 日志目录\日志名称 --auth

mongod --install --dbpath D:\JAVA_Environment\MongoDB\mongodb-win32-x86_64-windows-4.4.2\data --logpath D:\JAVA_Environment\MongoDB\mongodb-win32-x86_64-windows-4.4.2\logs\mongodb-zsr.log --auth

启动mobgo

net start mongodb

登录测试

  1. 输入mongo命令登录,可以发现不再显示警告,且查看数据库看不到,这是因为还没有身份验证,没有通过账号登录

通过超级管理员账号登录即可看到

方法一

mongo 服务器ip地址:端口号/数据库 -u 用户名 -p 密码

方法二

mongo #先登录
use admin #选择数据库
db.auth(用户名,密码)

创建账号语法

创建账号语法

db.createUser({
“user”:“账号”,
“pwd”:“密码”,
“roles”:[{
role:“角色”,
db:“所属数据库”
}]
})

添加超级管理员账号

# 必须使用admin数据库
use admin

# 创建超级用户

db.createUser({
“user”:“zsr”,
“pwd”:“123456”,
“roles”:[{
role:“root”,
db:“admin”
}]
})

8.卸载服务

mongod --remove

9.导出数据

导出数据

-h 服务器ip地址(一般不写,默认本机)
-port 端口(一般不写,默认27017)
-u 账号
-p 密码
-d 数据库(不写则表示导出全部)
-o 备份到指定目录下

-drop 先删除数据库再导入,不写则覆盖

mongodump -h -port -u -p -d -o

备份所有数据:

在MongoDB安装目录下新建一个data_backup目录用于存放所有的备份数据

mongodump -u zsr -p 123456 -o D:\JAVA_Environment\MongoDB\mongodb-win32-x86_64-windows-4.4.2\data_backup

然后再查看data_backup目录,可以看到备份的所有的数据库

备份指定数据:

在MongoDB安装目录下新建一个data_backup2目录用于存放备份的shop数据库

用具有读权限的用户就可以

mongodump -u shop1 -p 123456 -d shop -o D:\JAVA_Environment\MongoDB\mongodb-win32-x86_64-windows-4.4.2\data_backup2

然后再查看data_backu2目录,可以看到备份的shop数据库

还原数据库mongorestore

mongostore -h -port -u -p -d --drop 备份数据目录

还原所有数据

首先删除几个数据库

然后输入如下命令从data_backup目录进行恢复

mongorestore -u zsr -p 123456 --drop D:\JAVA_Environment\MongoDB\mongodb-win32-x86_64-windows-4.4.2\data_backup

然后再次登录查看数据库,可以发现已经恢复

还原指定数据:

首先删除shop数据库

然后输入如下命令从data_backup2目录恢复shop数据库

用具有写权限的shop2用户

mongorestore -u shop2 -p 123456 -d shop --drop D:\JAVA_Environment\MongoDB\mongodb-win32-x86_64-windows-4.4.2\data_backup2\shop

然后再次登录查看shop数据库,可以发现已经恢复
 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值