当前位置: 首页>前端>正文

mongodb环境部署实验心得 mongodb部署方式

MongoDB介绍

  • 介于关系数据库和非关系数据库之间的产品
  • 一款基于分布式文件存储的数据库,旨在为WEB应用提供可扩展的高性能数据库存储解决方案
  • 将数据存储为一个文档(类似于JSON对象),数据结构由键值(key=>value)对组成
  • 支持丰富的查询表达,可以设置任何属性的索引
  • 支持副本集,分片

搭建MDB服务器

一、装包

[root@ip50 ~]# tar -zxf mongodb/mongodb-linux-x86_64-rhel70-3.6.3.tgz  //解压安装包
[root@ip50 ~]# mkdir /usr/local/mongodb    //创建主目录
[root@ip50 ~]# cp -r mongodb-linux-x86_64-rhel70-3.6.3/bin /usr/local/mongodb/    //将主程序拷贝到主目录
[root@ip50 ~]# cd /usr/local/mongodb/
[root@ip50 mongodb]# mkdir -p etc log data/db    //创建工作目录

二、修改配置文件

[root@ip50 ~]# vim /usr/local/mongodb/etc/mongodb.conf
logpath=/usr/local/mongodb/log/mongodb.log   
logappend=true  						 //追加方式记录日志信息
dbpath=/usr/local/mongodb/data/db          //数据库目录
fork=true                                  //守护进程方式运行

三、启动、连接服务

  1. 启动服务
[root@ip50 mongodb]# /usr/local/mongodb/bin/mongod -f /usr/local/mongodb/etc/mongodb.conf
  1. 连接服务,本地连接,默认没有设置密码
[root@ip50 ~]# /usr/local/mongodb/bin/mongo
show dbs  //显示已有的库
 use admin   //切换到admin库
 show tables  //查看当前库下有哪些表
 exit //退出

四、停止服务,设置命令别名,查看文件信息

  1. 停止服务
[root@ip50 ~]# /usr/local/mongodb/bin/mongod -f /usr/local/mongodb/etc/mongodb.conf --shutdown
  1. 定义别名
[root@ip50 ~]# alias mstart="/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/etc/mongodb.conf"
[root@ip50 ~]# alias mstop="/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/etc/mongodb.conf --shutdown"
  1. 永久别名定义
[root@ip50 ~]# vim /root/.bashrc
... ...
alias mstart="/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/etc/mongodb.conf"
alias mstop="/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/etc/mongodb.conf --shutdown"
... ...

五、修改访问服务的ip跟端口

[root@ip50 ~]# vim /usr/local/mongodb/etc/mongodb.conf

logpath=/usr/local/mongodb/log/mongodb.log
logappend=true
dbpath=/usr/local/mongodb/data/db
fork=true
bind_ip=192.168.4.50   //定义访问ip
port=27050       //定义端口

//修改之后,连接服务,需要指定ip跟端口
[root@ip50 ~]# /usr/local/mongodb/bin/mongo --host 192.168.4.50 --port 27050

数据库管理

查看、创建、切换、删除库

  • show dbs //查看已有的库
  • db //显示当前所在的库
  • use 库名 //切换库,若库不存在则会延时创建库
  • show collections 或 show tables //查看库下已有集合
  • db.dropDatabase() //删除当前所在的库

数据库名称规范

  • 不能是空字符串
  • 不得含有’ '(空格)、.、$、/、\和
  • 应全部小写
  • (空字符)
  • 最多64字节
  • 集合管理

  • 查看、创建、删除集合
    • show collections 或show tables 查看集合
    • db.集合名.drop() //删除集合
    • db.集合名.save({","}) //创建集合,集合不存在时,创建并添加文档
    • 集合命名规范

  • 不能是空字符串""
    • 不能含有
    • 不能以"system."开头,这是为系统集合保留的前缀
    • 字符(空字符),此字符表示几个的结尾
    • 用户创建的集合名字不能含有保留字符
    • 文档基本管理查看、统计、添加、删除文档

  • db.集合名.find()
    • 文档:类似于MySQL表里的记录
    • db.集合名.count()
    • db.集合名.insert({“name”:“jim”})
    • db.集合名.find({条件})
    • db.集合名.findOne() //返回一条文档
    • db.集合名.remove({}) //删除所有文档
    • db.集合名.remove({条件}) //删除匹配的所有文档
    • [root@ip50 ~]# /usr/local/mongodb/bin/mongo --host 192.168.4.50 --port 27050 > db.t1.save({'name':'bob','age':21}) > show tables t1 > db.t1.save({'school':'Qinghua','address':'beijing','tel':666}) > db.t1.find() { "_id" : ObjectId("5ce7963049efaff863716965"), "name" : "bob", "age" : 21 } { "_id" : ObjectId("5ce7967049efaff863716966"), "school" : "Qinghua", "address" : "beijing", "tel" : 666 } > db.t1.drop() //删除集合 true

      基本数据类型

    创建集合,添加数据

    字符串string
  • UTF-8字符串可以表示为字串类型的数据
  • 字符string/布尔bool/空null

  • {name:“张三”}或{school:“beida”}
    • 布尔bool
    • 布尔类型有两个值true和false,{x:true}

    空null

    • 用于表示空值或者不存在的字段,{x:null}

    > db.t2.save({name:"lucy",ruslt:null}) > db.t2.save({"gender":true,"height":false}) > db.t2.find() { "_id" : ObjectId("5ce7a64d49efaff86371696c"), "name" : "lucy", "ruslt" : null } { "_id" : ObjectId("5ce7a68549efaff86371696d"), "gender" : true, "height" : false }

      数值/数组array
  • 数值
  • shell默认使用64位浮点型数值。{x:3.14}或{x:3}
    1. NumberInt(4字节整数){x:NumberInt(3)}
    • NumberLong(8字节整数){x:NumberLong(3)}
    • 数组array
    • 数据列表或数据集可以表示为数组
    1. {x:[“a”,“b”,“c”]}
      > db.t3.save({x:3.14,y:3.56}) > db.t3.save({z:NumberInt(55.55)}) > db.t3.save({w:NumberLong(66.66)}) //不允许存储浮点型数值 > db.t3.save({w:NumberLong(66)}) > db.t3.find() { "_id" : ObjectId("5ce7a8a249efaff86371696e"), "x" : 3.14, "y" : 3.56 } { "_id" : ObjectId("5ce7a8db49efaff86371696f"), "z" : 55 } { "_id" : ObjectId("5ce7a90249efaff863716970"), "w" : NumberLong(66) }代码/日期/对象
  • 代码
  • 查询和文档中可以包括任何JavaScript代码
    1. 代码
    • 日期
    • {x:function(){/
    • 日期被存储为自新纪元以来经过的毫秒数,不含时区
    • /}}
    1. {x:new Date()}
    • 对象
    • 对象id是一个12字节的字符串,是文档的唯一标识
    1. {x:ObjectId()}
      > db.t4.save({name:"jack",birthday:new Date()}) > db.t4.save({lname:"php",phpCode:function(){/*<?php echo "hello boy!!!"; ?>*/}}) > db.t4.save({w:ObjectId()}) > db.t4.find() { "_id" : ObjectId("5ce7ae0949efaff863716973"), "name" : "jack", "birthday" : ISODate("2019-05-24T08:40:41.060Z") } { "_id" : ObjectId("5ce7ae8649efaff863716974"), "lname" : "php", "phpcode" : { "code" : "function (){/*<?php echo \"hello boy!!!\"; ?>*/}" } } { "_id" : ObjectId("5ce7af5449efaff863716976"), "w" : ObjectId("5ce7af5449efaff863716975") }内嵌/正则表达式
  • 内嵌
  • 文档可以嵌套其他文档,被嵌套的文档做为值来处理
    1. > db.t5.save({"beida":{"worker":"hsy","tel":119,address:"beijing","people":10000},money:10000}) > db.t5.find() { "_id" : ObjectId("5ce7b2cb49efaff863716978"), "beida" : { "worker" : "hsy", "tel" : 119, "address" : "beijing", "people" : 10000 }, "money" : 10000 }
    • 正则表达式
  • 查询时,使用正则表达式做为限定条件
    1. {x:/正则表达式/}
      > db.t5.save({linenull:/^$/,linefirst:/^/}) > db.t5.find() { "_id" : ObjectId("5ce7b3c849efaff863716979"), "linenull" : /^$/, "linefirst" : /^/ }

      数据导入导出

    语法格式1
    #mongoexport [--host IP地址 --port 端口] -d 库名 -c 集合名 -f 字段名1,字段名2 --type=csv > 目录名/文件名.csv

    数据导出

    [root@ip50 ~]# /usr/local/mongodb/bin/mongoexport --host 192.168.4.50 --port 27050 -d userdb -c t2 -f name,ruslt --type=csv > /root/1.txt [root@ip50 ~]# cat /root/1.txt
    语法格式2

    #mongoexport --host IP地址 --port 端口 -d 库名 -c 集合名 -q '{条件}' -f 字段名1,字段名2 --type=csv > 目录名/文件名.csv

    [root@ip50 ~]# /usr/local/mongodb/bin/mongoexport --host 192.168.4.50 --port 27050 -d userdb -c t4 -q '{name:/.*jack.*/}' -f name,age --type=csv > /root/2.txt [root@ip50 ~]# cat /root/2.txt
    注意:导出为csv格式必须使用-f指定字段名列表,如果不指定–type,默认是json格式

    语法格式3

    # mongoexport [--host IP地址 --port 端口] -d 库名 -c 集合名 [-q '{条件}' -f 字段列表] --type=json > 目录名/文件名.json

    [root@ip50 ~]# /usr/local/mongodb/bin/mongoexport --host 192.168.4.50 --port 27050 -d userdb -c t4 --type=json > /root/3.json [root@ip50 ~]# cat /root/3.json
    语法格式1

    #mongoimport --host IP地址 --port 端口 -d 库名 -c 集合名 --type=json 目录名/文件名.json

    数据导入

    语法格式2
    #mongoimport --host IP地址 --port 端口 -d 库名 -c 集合名 --type=csv [--headerline] [--drop] 目录名/文件名.csv

    注:

  • 导入数据时,若库和集合不存在,则先创建库和集合后再导入数据
  • 若库和集合已经存在,则以追加的方式导入数据到集合里
    1. 使用–drop选项可以删除原数据后导入新数据,–headerline 忽略标题
    2. 导入etc写的passwd[root@ip50 ~]# cp /etc/passwd /root/ [root@ip50 ~]# sed -i 's/:/,/g' /root/passwd [root@ip50 ~]# sed -i '1iname,password,uid,gid,comment,homedir,shell' /root/passwd //第一行添加7个表头

    [root@ip50 ~]# /usr/local/mongodb/bin/mongoimport --host 192.168.4.50 --port 27050 -d userdb -c user --type=csv --headerline --drop /root/passwd

    [root@ip50 ~]# /usr/local/mongodb/bin/mongo --host 192.168.4.50 --port 27050

    导入到userdb库下的user集合里边

    数据备份恢复

    登录查看数据

    备份数据所有库到当前目录下的dump目录下
    # mongodump [--host ip地址 --port 端口]

    [root@ip50 ~]# /usr/local/mongodb/bin/mongodump --host 192.168.4.50 --port 27050 [root@ip50 ~]# ls dump/
    备份时指定备份的库和备份目录

    # mongodump [--host ip地址 --port 端口] -d 数据库名 -c 集合名 -o 目录

    [root@ip50 ~]# mkdir /mybak [root@ip50 ~]# /usr/local/mongodb/bin/mongodump --host 192.168.4.50 --port 27050 -d userdb -c user -o /mybak/
    查看bson文件内容

    # bsondump ./dump/bbs/t1.bson

    [root@ip50 ~]# /usr/local/mongodb/bin/bsondump /mybak/userdb/user.bson

    数据恢复

    语法格式
    #mongorestore --host ip地址 --port 端口 -d 数据库名 [-c 集合名] 备份目录名

    [root@ip51 ~]# /usr/local/mongodb/bin/mongorestore --host 192.168.4.51 --port 27051 -d userdb /root/mybak/userdb

    将50上的备份文件拷贝到51上,在51上进行数据恢复



    https://www.xamrdz.com/web/23y1933100.html

    相关文章: