mongdb

MongoDB是一个基于分布式文件存储 [1] 的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
上面说到,MongoDB是介于关系型数据库和非关系型数据库之间的产品,其实更多的人把MongoDB直接当成非关系数据库,其实这都不重要,重要的是我们需要搞清楚关系型数据库如:Mysql,非关系型数据库如:Redis,和MongDB他们的区别以及使用场景。


数据库说明

MongoDB 主要由: 文档(document)、集合(collection)、数据库(database)这三部分组成的。
MongoDB 的文档(document),相当于关系数据库表中的一行记录。
多个文档组成一个集合(collection),相当于关系数据库的表。
多个集合(collection),逻辑上组织在一起,就是数据库(database)。
一个 MongoDB 实例支持多个数据库(database)。

小结:

MongoDB的结构:一个数据库里可以有多个集合,一个集合里可以有多个文档
Database:数据库
Collection:集合,相当于一张表,可以理解为是一个List<Object>;
Document:文档,相当于表里的记录,可以理解为List<Object>里的一个Object对应的json ;
Field:字段
Index:索引,提升查询数据的速度,但是也影响增删改的速度。

$ wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-5.0.7.tgz
$ tar -xzvf mongodb-linux-x86_64-rhel70-5.0.7.tgz
$cd /usr/local
$mkdir mongodb
$mkdir data
$mkdir logs
$touch /usr/local/mongodb/logs/mongodb.log
$mv mongodb-linux-x86_64-4.0.0/* /usr/local/mongodb
$vim /etc/profile
export MONGODB_HOME=/usr/local/mongodb
export PATH=$MONGODB_HOME/bin:$PATH
$source /etc/profile
$vim /etc/mongodb.conf
#指定数据库路径
dbpath=/usr/local/mongodb/data
#指定MongoDB日志文件
logpath=/usr/local/mongodb/logs/mongodb.log
# 使用追加的方式写日志
logappend=true
#端口号
port=27017 
#方便外网访问
bind_ip=0.0.0.0
fork=true # 以守护进程的方式运行MongoDB,创建服务器进程
#auth=true #启用用户验证
#bind_ip=0.0.0.0 #绑定服务IP,若绑定127.0.0.1,则只能本机访问,不指定则默认本地所有IP

启动和关闭 MongoDB

$cd /usr/local/mongodb/bin
$mongod -f /etc/mongodb.conf
$mongod --shutdown -f /etc/mongodb.conf

MongoDB 管理
创建 MongoDB 数据库及管理员账号
进入mongodb的命令行模式

cd /usr/local/mongodb/bin
./mongo
> use admin;
> db.createUser({user:'root', pwd:'123456', roles:[{role:'root', db:'admin'}]});

创建好账号后,可以选择打开 mongodb.conf 中的 auth=true 授权验证。
验证账号是否授权成功:
db.auth("root","123456")


工具安装,navicat
Navicat Premium 16 安装并破解激活图文教程 - -悟空 - 博客园


操作命令
开启mongodb命令

通过mongo连接MongoDB服务器
[root@localhost ~]# mongo
MongoDB shell version v5.0.7
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("9b76e2b1-c1a7-43c1-b82e-c067ed0a628f") }
MongoDB server version: 5.0.7
>db.createCollection('集合名称'); #相当于创建对应的表'集合名称'
>db.createCollection('users');#相当于创建于对应的表'users'
>show collections
#和MySQL中的 show tables; 指令一样
users
集合名称
#认证:db.auth("root","123456")
> db.users.insert({ name: '张三', age: 18 })
WriteResult({ "nInserted" : 1 })
> show collections
users
集合名称
> db.users.find()
{ "_id" : ObjectId("68494c3904f5653824d495b7"), "name" : "wc", "age" : 100 }
{ "_id" : ObjectId("68494f1471a22aeb3da03979"), "name" : "张三", "age" : 18 }

常用命令
1.常看当前的数据库信息
db.getName();
2.显示当前db状态
db.stats();
3.查看db当前的版本信息
db.version();
4.创建一个聚集集合(table)
db.createCollection("collName", {size: 20, capped: 5, max: 100});
5.得到指定名称的聚集集合(table)
db.getCollection("account");
6.得到当前db的所有聚集集合
db.getCollectionNames();
7.添加一个用户
db.addUser("name");
db.addUser("userName", "pwd123", true); 添加用户、设置密码、是否只读


报错
问题:进入MongoDB后,新建了一个数据库,为这个数据库创建用户时,报错:Error: command createUser requires authentication

解决:原因是 安装的MongoDB开启了用户名和密码验证 ,如果没有登录过就直接创建数据库用户就会报错,因为没有权限创建,这时候需要先登录超级用户,比如:

// 切换到默认数据库
use admin
// 登录,用户名和密码请根据自己创建时的设定修改
db.auth("admin","123456")
        切换到需要创建用户的数据库
// 切换数据库
use demo
// 创建用户名为demo,密码为111111的用户,并且该用户的权限是readWrite, 该用户作用于demo数据库
db.createUser({ user:'demo',pwd:'111111',roles:[ {role:"readWrite", db:'demo'}]});

测试连接


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 安装 概述 MongoDB 是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高...
    lesline阅读 3,619评论 0 1
  • MongoDB由C++语言编写,运行稳定,性能高 MongoDB 将数据存储为一个文档,数据结构由键值(key=>...
    糖炒栗子_01c5阅读 1,521评论 0 1
  • WiredTiger 是一个开源的、高性能、可伸缩的 MongoDB 数据存储引擎。 SSPL协议是只对使用云厂商...
    Bogon阅读 5,614评论 0 1
  • MySQL的介绍: 是什么? 感性认识:表格放数据 理性认识:一种关系数据库管理系统 分类: 层次数据库 网状数据...
    周行知阅读 4,415评论 0 0
  • 成功启动MongoDB后,再打开一个命令行窗口输入mongo,就可以进行数据库的一些操作。 输入help可以看到基...
    裘马轻狂大帅阅读 1,787评论 0 2