Centos7中安装MongoDB(使用Docker方式)及简单使用

  • Post author:
  • Post category:其他




1、MongoDB简介

MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。

MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

MongoDB的特点:

1、MongoDB 是一个面向文档存储的数据库,操作起来比较简单和容易。

2、你可以在MongoDB记录中设置任何属性的索引来实现更快的排序。

3、MongoDB有很强的扩展性,海量数据处理时可以根据需要进行分片。

4、Mongo支持丰富的查询表达式。

5、Mongodb中的Map/reduce主要是用来对数据进行批量处理和聚合操作。

6、GridFS是MongoDB中的一个内置功能,可以用于存放大量小文件。

7、MongoDB支持多种编程语言。

MongoDB主要使用场景如下:

1)网站实时数据处理。它非常适合实时的插入、更新与查询,并具备网站实时数据存储所需的复制及高度伸缩性。

2)缓存。由于性能很高,它适合作为信息基础设施的缓存层。在系统重启之后,由它搭建的持久化缓存层可以避免下层的数据源过载。

3)高伸缩性的场景。非常适合由数十或数百台服务器组成的数据库,它的路线图中已经包含对MapReduce引擎的内置支持。



2、MongoDB的安装



2.1 准备一台centos7机器(关闭防火墙,安装Docker)

安装Docker参考:

在Centos7中安装Docker



2.2 使用Docker方式安装MongoDB

# 安装MongoDB
docker run -d -p 27017:27017 --name mongodb -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=123456 mongo

# 进入到MongoDB容器中
docker exec -it mongodb /bin/bash

# 登录 admin数据库
mongo 192.168.1.7:27017 -u 'admin' -p '123456' --authenticationDatabase 'admin'



3 MongoDB的简单操作与使用



3.1 创建数据库student

#  创建数据库student
use student



3.2 创建student数据库的用户che,密码是123456(dbOwner: 对当前数据库有全部权限)

# 
db.createUser({ user: 'che', pwd: '123456', roles: [ { role: "dbOwner", db:"student" } ] });

在这里插入图片描述

常用权限说明:
read: 只能读取指定数据库
readWrite: 能读写指定数据库
dbAdmin: 能执行管理函数,如索引创建、删除,查看统计或访问 system.profile
dbOwner: 对当前数据库有全部权限
userAdmin: 能创建、删除和管理用户
root: 只能在 admin 数据库中可用。超级权限



3.3 登录数据库,创建文档(表)

# 登录数据库
db.auth("che","123456")

# 创建文档(表)test
db.createCollection("test")

# 查看数据库
show dbs;

# 查看数据表
show tables;

# 切换数据库
use student;

在这里插入图片描述



3.4 新增、修改、删除、查询数据

# insert数据
db.test.insert({_id:"n0001",no:"s0001",name:"张华",age:12})
db.test.insert({_id:"n0002",no:"s0002",name:"张明",age:11})
db.test.insert({_id:"n0003",no:"s0003",name:"张远",age:13})
db.test.insert({_id:"n0004",no:"s0004",name:"刘芳",age:12})

# find查询所有
db.test.find()

在这里插入图片描述

# 修改
db.test.update({_id:"n0001"},{$set:{name:"张华-new"}})

在这里插入图片描述

# 删除
db.test.remove({_id:"n0001"})

在这里插入图片描述

# 根据id精确查询
db.test.find({_id:"n0002"})

db.test.find({_id:/n000/"})

# 模糊查询
db.test.find({_id:/n000/})
db.test.find({name:/张/})

# 根据年龄(大于、小于)
db.test.find({age:{$gt:12}})
db.test.find({age:{$gte:12}})
db.test.find({age:{$lt:12}})
db.test.find({age:{$lte:12}})

在这里插入图片描述

在这里插入图片描述

# 分页查询
db.test.find().skip(2).limit(2)

在这里插入图片描述



版权声明:本文为ytangdigl原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。