MongoDB基础

MongoDB基础

MongoDB简介

  • MongoDB是一款跨平台、面向文档的数据库。可以实现高性能、高可用,并且能够轻松扩展。是一个基于分布式文件存储的开源数据库系统,下高负载的情况下,添加更多的节点,可以保证服务器性能。
  • MongoDB也是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最想关系型数据库的,不采用关系模型主要是为了获得更好的扩展性,MongoDB不再有“行”(row)的概念,器运行方式主要基于两个概念:集合(collection)和文档(document)。

MongoDB的特点

  • MongoDB的特点包括面向集合存储、模式自由、丰富的查询语言和多级索引、复制集机制、易于水平扩展、可插入存储引擎、跨平台多语言支持等。
  • MongoDB安装简单,提供了面向文档存储功能,操作起来比较容易。
  • MongoDB提供了复制、高可用性和自动分片功能。如果负载增加(需要更多的存储空间和更强的处理能力),它可以分布在计算机网络中的其他节点上,这就是所谓的分片。
  • MongoDB支持丰富的查询表达式。查询指令使用JSON形式的标记,可以查询文档中内嵌的对象及数组。
  • MongoDB支持各种编程语言:Puby、Python、Java、C++、PHP、C#等多种语言。
实验环境
主机软件包
CnetOS 7mongodb-3.6

MongoDB的安装

1、配置YUM源仓库

vim /etc/yum.repos.d/mongodb-org.repo

[mongodb-org]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc

vi /etc/mongod.conf

bindIp: 0.0.0.0             #监听地址
port: 27017                 #监听端口
auth=true                   #开启用户认证

systemctl start mongod.service

netstat -anpt | grep 27017

tcp     0   0.0.0.0:27017   0.0.0.0:*   LISTEN   3153/mongod

mongo

db.version() #版本号

3.6.6
2、MongoDB多实例

cp -p /etc/mongod.conf /etc/mongod2.conf

vim /etc/mongod2.conf

   path: /data/mongodb/mongod2.log  #日志文件存储目录
   dbPath: /data/mongodb/mongo      #数据存储目录
   port: 27018                      #端口不可相同

mkdir -p /data/mongodb/

cd /data/mongodb/

mkdir mongo #创建数据存储目录

touch mongod2.log #创建日志文件存储目录

chmod 777 mongod2.log #提权

mongod -f /etc/mongod2.conf #从第二个配置文件启动(-f:为强制)

mongo --port 27018 #进入

MongoDB基本操作

  • MongoDB的基础操作主要是对数据库、集合、文档的操作,包括创建数据库、删除数据库、插入文档、更改文档、删除文档和查询文档。

  • MongoDB中常用的基本操作:
操作描述
show dbs查看当前实例下的数据库列表
show users显示用户
use <db_name>切换当前数据库
db.help()显示数据库操作命令
show collection显示当前数据库的集合
db.abc.help()显示集合操作命令,abc是当前数据库下的集合
db.abc.find()对当前数据库中abc集合进行数据查找
1、在MongoDB中创建和删除数据库
  • 在MongoDB中如果数据库不存在,则创建数据库,否则切换到指定数据库;

mongo

use school #使用school数据库

switched to db school

show dbs #查看

school 0.078GB
local 0.078GB

db.dropDatabase() #删除数据库

{"dropped":"school","ok":1}

show dbs #查看

local 0.078GB 
2、MongoDB的集合和文档操作
  • 1)、 在MongoDB中使用insert()方法向集合中插入文档

    例如:在abc集合中插入两个文档;一个插入id为1,名字是"zhangsan";一个插入id为2,名字为"lisi";
    db.abc.insert({"id":1,"name":"zhangsan"})
    db.abc.insert({"id":2,"name":"lisi"})

  • 2)、在MongoDB中使用update()方法来更新集合中的文档

    例如:将abc集合中的id为1,名字为"zhangsan"的文档中的名字更改为"wangwu";
    db.abc.update({"id":1},{$set:{"name":"wangwu"}})

  • 3)、在MongoDB中使用remove来移除集合中的数据

    例如:将id为2,名字为"lisi"的文档删除;
    db.abc.remove({"id":2})

  • 4)、在MongoDB中使用drop()删除集合

    例如:将abc集合删除;
    db.abc.drop()

3、MongoDB数据的导入与导出
  • 可以使用mongoexport和mongoimport命令来导出导入MongoDB的数据;

    参数说明:
    -d:指明数据库的名字
    -c:指明集合的名字
    -f:指明要导出的那些列
    -o:指明导出的文件名
    -q:指明导出数据的过滤条件

  • 1)、数据导出操作

    mongoexport -d school -d abc -o /opt/abc.json
    #将school数据库中的abc集合中的数据导出到opt中的abc.json文件中

  • 2)、数据导入操作

    mongoimport -d school -d abc --file /opt/abc.json
    #将opt中的abc.json中的数据导入到school数据库中的abc集合中

4、MongoDB中的数据备份与恢复
  • 可以使用mongodump命令来备份MongoDB数据;mongorestore命令来恢复MongoDB数据;

    参数说明:
    -h:MongoDB所在的服务器地址
    -d:需要备份的数据库实例
    -o:备份的数据存放位置,该目录需要提前建立,在备份完成后,系统会自动在dump目录在建立一个test目录,在这么目录里面存放在数据库实例的备份数据。

mkdir /opt/backup #创建备份数据存放目录

mongodump -d school -o /opt/backup #备份

mongorestore -d school1 --dir=/opt/backup/school #恢复

5、复制数据库
  • 在MongoDB中使用db.copyDatabase命令复制数据库;

    db.copyDatabase("school","school2")
    #将school数据库进行复制,名为school2

6、克隆集合
  • 在多实例中可以将将一个实例中的数据库的集合克隆到另一个实例中;

mongod -f /etc/mongod2.conf

mongo --port 27018 #进入第二个实例

db.runCommand({"cloneCollection":"school.abc","from":"192.168.27.128:27017"}) #将第一实例中的school数据库的abc集合克隆到第二个实例中

7、授权启动
  • 可以配置授权用户来访问MongoDB,启动时必须指定auth=true,否则授权不起作用;

use admin

db.createUser({"user":"root","pwd":"123","roles":["root"]})

db.auth("root","123") #登录

8、进程管理

db.currentOp() #查看进程

显示
"opid" : 4827,

db.killOp(4827) #终止进程

转载于:https://blog.51cto.com/13659182/2146146

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值