二十九、MongoDB(1)

建议可忽略理论直接下载安装

文章总结MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。

通过学习,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。

MongoDB官方英文文档

MongoDB官方中文文档

一、MongoDB简介

1.1 什么是 MongoDB

MongoDB 是一个跨平台的,面向文档的数据库,是当前 NoSQL 数据库产品中最热门的一种。它介于关系数据库和非关系数据库之间,是非关系数据库当中功能最丰富,最像关系数据库的产品。它支持的数据结构非常松散,是类似JSON 的 BSON 格式,因此可以存储比较复杂的数据类型。

在这里插入图片描述

1.2 MongoDB特点

MongoDB 最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。它是一个面向集合的,模式自由的文档型数据库。

具体特点总结如下:

  • (1)面向集合存储,易于存储对象类型的数据
  • (2)模式自由
  • (3)支持动态查询
  • (4)支持完全索引,包含内部对象
  • (5)支持复制和故障恢复
  • (6)使用高效的二进制数据存储,包括大型对象(如视频等)
  • (7)自动处理碎片,以支持云计算层次的扩展性
  • (8)支持 Python,PHP,Ruby,Java,C,C#,Javascript,Perl 及 C++语言的驱动程序,社区中也提供了对 Erlang 及.NET 等平台的驱动程序
  • (9) 文件存储格式为 BSON(一种 JSON 的扩展)

1.3 MongoDB 体系结构

MongoDB 的逻辑结构是一种层次结构。主要由:文档(document)、集合(collection)、数据库(database)这三部分组成的。逻辑结构是面向用户
的,用户使用 MongoDB 开发应用程序使用的就是逻辑结构。

  • (1)MongoDB 的文档(document),相当于关系数据库中的一行记录。
  • (2)多个文档组成一个集合(collection),相当于关系数据库的表。
  • (3)多个集合(collection),逻辑上组织在一起,就是数据库(database)。
  • (4)一个 MongoDB 实例支持多个数据库(database)。
    文档(document)、集合(collection)、数据库(database)的层次结构如下图:

在这里插入图片描述

MySQLMongoDB对比

MongoDb关系型数据库Mysql
数据库(databases)数据库(databases)
集合(collections)表(table)
文档(document)行(row)

在这里插入图片描述

SQL术语/概念MongoDB术语/概念解释/说明
databasedatabase数据库
tablecollection数据库表/集合
rowdocument数据记录行/文档
columnfield数据字段/域
indexindex索引
table joins表连接,MongoDB不支持
嵌入文档MongoDB通过嵌入式文档来替代多表连接
primary keyprimary key主键,MongoDB自动将_id字段设置为主键

二、下载与安装

2.1 MongoDB下载

下载安装包

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

根据上图所示下载 zip 包。
提示:版本的选择:
MongoDB的版本命名规范如:x.y.z
y为奇数时表示当前版本为开发版,如:1.5.2、4.1.13;
y为偶数时表示当前版本为稳定版,如:1.6.3、4.0.10;
z是修正版本号,数字越大越好。一般使用稳定版
详情 mongodb中文文档

2.2 在Linux 上的安装

2.2.1 安装前的准备

(1)VMware-workstation-full-12.1.0-3272444VMware 12 专业版

(2)虚拟机所使用镜像:CentOS-7-x86_64-Minimal-1708.iso

(3)mongodb: mongodb-linux-x86_64-rhel70-4.0.9.tgz(与上面资源库一致)

2.2.2 开始安装

1、上传下载回来的安装包到LINUX服务器

在这里插入图片描述

2、解压缩安装包到 /usr/local

tar -xvf mongodb-linux-x86_64-rhel70-4.0.9.tgz -C /usr/local

在这里插入图片描述

3、对解压目录重新命名

cd /usr/local

mv mongodb-linux-x86_64-rhel70-4.0.9 mongodb

rm -rf mongodb-linux-x86_64-rhel70-4.0.9.tgz

在这里插入图片描述

4、创建数据库目录

  • MongoDB的数据存储在data目录的db目录下,但是这个目录在安装过程不会自动创建,所以你需要手动创建data目录,并在data目录中创建db目录。
    以下实例中我们将data目录创建于根目录下,即 /usr/local下面(/)。
    注意:/data/db 是 MongoDB 默认的启动的数据库路径(--dbpath)。
mkdir /data/db -p

在这里插入图片描述

5、启动MongoDB服务

  • 进入mongodb的bin目录
    输入命令:./mongod

在这里插入图片描述

6、进入MongoDB后台管理 Shell

  • 另起一个终端,进入目录 cd /usr/local/mongodb/bin
    输入命令:./mongo
    即可进入MongDB后台管理Shell

在这里插入图片描述

由于它是一个JavaScript shell,您可以运行一些简单的算术运算:

2+2
4
3+6
9

在这里插入图片描述

注意:可以将客户端mogo文件在/bin下软链接,方便随处执行:

ln  -s  /usr/local/mongodb/bin/mongo /bin/mongo

在这里插入图片描述
在这里插入图片描述

2.2.3 测试软链接启动

我们另外打开命令提示符窗口,如果mongoDB是按默认的端口启动的,并且是部署在本机的。输入命令 mongo 即可登陆系统

在这里插入图片描述

从界面输出的信息我们可以得知,它默认连接的是test数据库

  • 如果是要连接远程的mongoDB服务器 ,就输入命令
mongo 远程IP地址

如果远程的mongoDB服务端口不是默认的,需要输入命令

mongo 远程IP地址:端口

输入exit命令可退回到命令提示符

2.3 在windows上的安装

① 第一步:解压安装启动

将压缩包解压到一个目录中。
在解压目录中,手动建立一个目录用于存放数据文件,如 data/db

在这里插入图片描述

  • 方式1:命令行参数方式启动服务(调试建议使用)
    在 bin 目录中打开命令行提示符,输入cmd再输入如下命令:
mongod --dbpath=..\data\db

在这里插入图片描述
在这里插入图片描述

我们在启动信息中可以看到,mongoDB的默认端口是27017,如果我们想改变默认的启动端口,可以通过--port来指定端口。
为了方便我们每次启动,可以将安装目录的bin目录设置到环境变量的path中, bin 目录下是一些常用命令,比如 mongod 启动服务用的,mongo 客户端连接服务用的。

在这里插入图片描述

直接打开命令窗口测试:

在这里插入图片描述
在这里插入图片描述

windows 版本的安装步骤

🔷下载 .msi 文件,下载后双击该文件,按操作提示安装即可。
🔷 安装过程中,可以通过点击"Custom(自定义)”按钮来设置 MongoDB 数据库程序安装目录,也可以使用默认目录。
🔷下-步安装“install mongoDBcompass"不勾选(勾选需要联网下载Compass软件,可能需要更久的安装时间)

  • 🔷 MongoDBCompass 是一个图形界面管理工具,我们可以在后面自己到官网下载安装
  • 🔷 在初学者阶段,强烈建议不安装 MongoDBCompass,使用命令行在操作 MongoDB类据库,以此来提高我们的编程能力,且有助于我们在编程语言中操作 MongoDB.

🔷 在安装过程中选择installMongoDBasservice,是将 mongo 注册为系统服务(由此可以开机自启动及后台运行)

三、基本增删改查操作

3.1 选择或创建数据库

使用use 数据库名称即可选择数据库,如果该数据库不存在会自动创建

use mydb

在这里插入图片描述

3.2 插入文档

文档相当于关系数据库中的记录

  • 首先我们定义一个文档变量,格式为变量名称={}; 例如:
  • 接下来就是将这个变量存入MongoDB
  • 格式为:db.集合名称.save(变量);
  • 这里的集合就相当于关系数据库中的表。如下所示:
    这样就在mydb集合中存入文档。如果这个mydb集合不存在,就会自动创建。
    当然,你也可以不用定义变量,直接把变量值放入save方法中也是可以地。

3.3 查询集合

我们要查询某集合的所有文档,使用find()方法。语法格式为:

  • db.集合名称.find();
    例如,我们要查询mydb集合中的所有文档如下所示:

这里你会发现每条文档会有一个叫_id的字段,这个相当于我们原来关系数据库中表的主键,当你在插入文档记录时没有指定该字段,MongDB会自动创建,其类型是ObjectID类型。
如果我们在插入文档记录时指定该字段也可以,其类型可以使ObjectID类型,也可以是MongoDB支持的任意类型. 例如:

use mydb

db.userList.save({"id":1001,"name":"Daniel","age":22,"address":"shanghai"});
db.userList.save({"id":1002,"name":"hollow","age":42,"address":"xian"});
db.userList.save({"id":1003,"name":"Jenny","age":32,"address":"shenzhen"});
db.userList.save({"id":1004,"name":"Wdny","age":33,"address":"gansu"});

db.userList.find();

在这里插入图片描述

如果我想按一定条件来查询,比如我想查询id为“1003”的记录,怎么办?很简单!
只要在find()中添加参数即可,参数也是json格式,如下:

db.userList.find({id:1003});

在这里插入图片描述

为了避免游标可能带来的开销,MongoDB还提供了一个叫findOne()的方法,用来返回结果集的第一条记录。

db.userList.findOne({id:1003});

在这里插入图片描述

id为1003的有很多条,这里只返回了一条记录。
当我们需要返回查询结果的前几条记录时,可以使用limit方法,例如:

db.userList.find().limit(3);

在这里插入图片描述

3.4 修改文档

我们要想修改记录,可以使用update$set方法 .
例如:我先将姓名为Daniel的用户文档中的age字段值改为88,执行下列语句

db.userList.update({name:"Daniel"},{$set:{age:88}});

在这里插入图片描述

3.5 删除文档

删除文档使用remove()方法,格式为:

  • db.集合名称.remove( 条件 );

请慎用remove({}), 它会一条不剩地把你的集合所有文档删的干干净净。
我们现在演示一下,删除name为“hollow”的记录:

db.userList.remove({name:"hollow"});

在这里插入图片描述

  • 9
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Daniel521-Spark

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值