MongoDB 最全攻略(一)

本文涉及的产品
云数据库 MongoDB,通用型 2核4GB
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: 在介绍 MongoDB 之前,我先介绍一下业务开发的时候遇到的痛点,以便大家对它有一个更加清晰的认识!最近在用数据库存储数据的时候发现这么一个坑,例如从消息队列中监听消息的时候,原来的做法是将监听的消息数据存储在数据库,以便好对异常消息数据进行追溯,消息内容使用text类型存储,起初因为数据内容很短,没啥毛病,但是当随着业务的扩展,收到的消息内容越来越长,最后发现数据库中的text字段类型根本没法存储,于是在这个时候,就开始考虑采用更加合适的数据库来存储这种消息数据!

一、介绍

在介绍 MongoDB 之前,我先介绍一下业务开发的时候遇到的痛点,以便大家对它有一个更加清晰的认识!

最近在用数据库存储数据的时候发现这么一个坑,例如从消息队列中监听消息的时候,原来的做法是将监听的消息数据存储在数据库,以便好对异常消息数据进行追溯,消息内容使用text类型存储,起初因为数据内容很短,没啥毛病,但是当随着业务的扩展,收到的消息内容越来越长,最后发现数据库中的text字段类型根本没法存储,于是在这个时候,就开始考虑采用更加合适的数据库来存储这种消息数据!

在经过一番讨论之后,对于这种 json 类型的消息数据的存储,大家一致认为采用 MongoDB 是最佳的选择!

据官方介绍,MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富、最像关系数据库的一款高性能的 NoSQL 数据库。

MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。

其中的文档类似于 JSON 对象。字段值可以包含其他文档、数组及文档数组,数据结构的支持非常灵活!

的确,在使用的过程当中,正如所介绍的,数据的存储和查询,性能极快,而且很好的满足我们的需求!

话不多说,下面我们就一起来了解一下,这款数据库应该如何使用!

二、环境配置

在学习它之前,我们需要先搭建好环境,MongoDB 的安装也非常简单!

2.1、Windows 平台

如果你是 Windows 平台,MongoDB 提供了可用于 32 位和 64 位系统的预编译二进制,安装基本是傻瓜式的操作,登录 MongoDB 官网并且下载安装包,然后一步一步的操作即可!

10.jpg

2.2、Linux 平台

生产环境基本都是 Linux 平台,为了和生产保持一致,小编采用的服务器是CentOS7,安装过程也比较简单!

  • 创建资源文件
sudo vim /etc/yum.repos.d/mongodb-org-4.0.repo
  • 编辑内容如下
[mongodb-org-4.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc
  • 运行以下命令安装 mongodb
sudo yum install -y mongodb-org
  • 安装完成之后,配置mongod.conf允许远程连接
#编辑mongod.conf
vim /etc/mongod.conf
#将net:bindIp: 127.0.0.1 改为 0.0.0.0
net:
   bindIp:0.0.0.0
  • 最后启动服务
#开启服务
systemctl start mongod
#其他服务
#关闭服务
systemctl stop mongod
#重启服务
systemctl restart mongod
#开机自启
systemctl enable mongod

至此,环境配置已经完成!

三、数据库操作

MongoDB 的数据操作,是开发人员接触最频繁的部分,第一次使用的时候,你会发现它和我们传统使用的 sql 脚本命令完全不同,但是又类似,下面我们就一起来深入的了解下!

3.1、进入 MongoDB

进入 MongoDB 服务很简单,输入如下命令即可进入!

mongo

例如,在CentOS里面输入命令之后,进入的服务界面如下:

11.jpg

3.2、创建数据库

MongoDB 创建数据库的语法格式如下:

use DATABASE_NAME

如果数据库不存在,则创建数据库,否则切换到指定数据库

输入如下命令,可以查询数据库列表

#查询数据库列表
show dbs
#命令输出结果:
admin
config
local

可以看到,当前 MongoDB 有三个数据库!

输入如下命令,可以切换到admin数据库

use admin

输入db命令,还可以查询当前数据库

db

3.3、创建用户

默认的情况下,是没有用户的,也无法操作数据库,因此我们需要创建一个用户,同时给他分配权限!

3.3.1、创建一个管理员用户

创建一个用户、密码都是admin的用户,同时给这个用户分配userAdminAnyDatabase角色,指定的数据库为admin

#创建一个admin用户
db.createUser(
{
  user: "admin",
  pwd: "admin",
  roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
})

其中字段含义如下:

  • user:用户的名字;
  • pwd:用户的密码;
  • roles:指定用户的角色,可以用一个空数组给新用户设定空角色。
  • roles 中的 role:指定角色。
  • roles 中的 db:指定的数据库,例如上面中的角色userAdminAnyDatabase,只在 admin 数据库中可用。

角色在 MongoDB 中,代表着某个用户是否有权限访问数据库或者操作数据库,理解这点非常重要!

MongoDB 角色定义如下:

角色类型 名称 描述
admin数据库角色 readAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的读权限
admin数据库角色 readWriteAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的读写权限
admin数据库角色 userAdminAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
admin数据库角色 dbAdminAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限
admin数据库角色 clusterAdmin 只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限
admin数据库角色 root 只在admin数据库中可用,超级账号,超级权限
数据库管理角色 dbAdmin 允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
数据库管理角色 userAdmin 允许用户向system.users集合写入,可以在指定数据库里创建、删除和管理用户
数据库用户角色 read 允许用户读取指定数据库
数据库用户角色 readWrite 允许用户读写指定数据库
3.3.2、创建一个不受访问限制的超级用户

如果你想创建一个不受访问限制的超级用户,赋予root角色即可!

#创建超级用户
db.createUser(
    {
        user:"root",
        pwd:"root",
        roles:["root"]
    }
)
相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
8月前
|
NoSQL 数据可视化 MongoDB
mongoDB入门教程二:推荐一款好用的mongoDB可视化工具Robo 3T
mongoDB入门教程二:推荐一款好用的mongoDB可视化工具Robo 3T
307 1
mongoDB入门教程二:推荐一款好用的mongoDB可视化工具Robo 3T
|
2月前
|
NoSQL Java MongoDB
MongoDB笔记
MongoDB笔记
28 0
|
存储 JSON NoSQL
mongodb笔记
mongodb笔记
358 0
|
NoSQL Java atlas
『MongoDB』免费领取官方提供的Atlas云托管MongoDB
📣读完这篇文章里你能收获到 - 官方提供的云托管MongoDB - 终身免费的测试账号
403 1
『MongoDB』免费领取官方提供的Atlas云托管MongoDB
|
存储 SQL NoSQL
MongoDB 最全攻略(二)
在介绍 MongoDB 之前,我先介绍一下业务开发的时候遇到的痛点,以便大家对它有一个更加清晰的认识! 最近在用数据库存储数据的时候发现这么一个坑,例如从消息队列中监听消息的时候,原来的做法是将监听的消息数据存储在数据库,以便好对异常消息数据进行追溯,消息内容使用text类型存储,起初因为数据内容很短,没啥毛病,但是当随着业务的扩展,收到的消息内容越来越长,最后发现数据库中的text字段类型根本没法存储,于是在这个时候,就开始考虑采用更加合适的数据库来存储这种消息数据!
MongoDB 最全攻略(二)
|
NoSQL Java 数据库连接
上手mongodb (二)
上手mongodb (二)
189 0
|
存储 缓存 JSON
MongoDB 入门须知
MongoDB是一个开源的,高性能,无模式(或者说是模式自由),使用C++语言编写的面向文档的数据库。正因为MongoDB是面向文档的,所以它可以管理类似JSON的文档集合。又因为数据可以被嵌套到复杂的体系中并保持可以查询可索引,这样一来,应用程序便可以以一种更加自然的方式来为数据建模。
143 0
MongoDB 入门须知
|
存储 JSON 分布式计算
MongoDB完整教程
什么是MongoDB ? MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。 在高负载的情况下,添加更多的节点,可以保证服务器性能。 MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。 主要特点 MongoDB的提供了一个面向文档存储,操作起来比较简单和容易。
404 0
|
NoSQL MongoDB 索引
一分钟了解mongodb
mongo的由来 截取自英文俚语humongous,意为”巨大的”,是否表明mongodb在设计之初就是为大数据量处理而生呢?
701 0
|
存储 NoSQL 数据库
MongoDB简易教程
传统数据库中,我们要操作数据库数据都要书写大量的sql语句,而且在进行无规则数据的存储时,传统关系型数据库建表时对不同字段的处理也显得有些乏力,mongo应运而生,而且ajax技术的广泛应用,json格式的广泛接受,也使得mongo更贴近开发人员。
1335 0