• MongoDB 概述


                                                                   Day13    MongoDB 概述

        

    软件介绍

    • 介于关系数据库和非关系数据库之间的产品

    – 一个基于分布式文件存储的数据库。

    – 由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。

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

    MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。

    软件特点

    – 安装简单

    – 面向文档存储,操作比较简单容易

    – 支持丰富的查询表达

    – 可以设置任何属性的索引

    – 支持主流编程语言 RUBY|PYTHON|JAVA|PHP|C++

    – 支持副本集,分片

     

    搭建 MongoDB 服务器

    1.装包

    • 免安装,解压后即可使用

    [root@bogon ~]# mkdir  /usr/local/mongodb

    [root@bogon ~]# tar -zxf mongodb-linux-x86_64-rhel70-3.6.3.tgz

    [root@bogon ~]# cp  -r

    mongodb-linux-x86_64-rhel70-3.6.3/bin  /usr/local/mongodb/

    [root@bogon ~]# cd /usr/local/mongodb/

    [root@bogon mongodb]# mkdir etc

    [root@bogon mongodb]# mkdir log

    [root@bogon mongodb]# mkdir -p data/db

    2.创建配置文件                         

    • 手动创建服务主配置文件      


     2修改导入导出配置文件

    bind_ip=192.168.4.55

    port=27055


     [root@bogon mongodb]#cd etc/                      

    [root@bogon  etc]# vim  mongodb.conf

    logpath=/usr/local/mongodb/log/mongodb.log                        加入

    logappend=true                                             # 追加的方式记录日志信息

    dbpath=/usr/local/mongodb/data/db              # 数据库目录

    fork=true                                                        # 守护进程方式运行

    3.启动服务  

    启动服务                         放在bin

    mongodb ]# ./bin/mongod -f  /usr/local/mongodb/etc/mongodb.conf

    • 查看进程

    mongodb ]# ps -C mongod

    • 查看端口

    mongodb ]# netstat -utnlp | grep :27017

    4.连接服务

    • 本地连接,默认没有密码

    [root@bogon ~]# /usr/local/mongodb/bin/mongo

    MongoDB shell version v3.6.3

    connecting to: mongodb://127.0.0.1:27017

    MongoDB server version: 3.6.3

    ......

    > show dbs      // 显示已有的库

    admin 0.000GB

    config 0.000GB

    local 0.000GB

    > exit # 断开连接


      常用管理命令

    数据库管理

    • 库管理命令: 查看 创建 切换 删除

    show dbs 查看已有的库

    ² 显示当前所在的库

    db                                 //查看当前的库

    use 库名                       //切换库,若库不存在的话 ,自动延时创建库

    show collections show tables    //查看库下已有的集合

    db.dropDatabase()                        //删除当前所在的库

    数据库管理(1 )

    • 数据库名可以是满足以下条件的任意 UTF-8 字符串。

    – 不能是空字符串( "")

    – 不得含有 ' ' (空格 ) . $ / ( 空字符 )

    – 应全部小写。

    – 最多 64 字节。

    集合管理

    • 集合管理命令:查看 创建 删除

    show collections show tables    # 查看集合

    db. 集合名 .drop()                       # 删除集合

    db. 集合名 .save({'',''})                 # 创建集合,集合不存

    在时,创建并添加文档

    > db.user.save({'name':'bob','age':'21'})

    WriteResult({ "nInserted" : 1 })

    集合管理(1 )

    • 合法的集合名

    – 集合名不能是空字符串 ""

    – 集合名不能含有 字符(空字符 ) ,这个字符表示集合名的结尾。

    – 集合名不能以 "system." 开头,这是为系统集合保留的前缀。

    – 用户创建的集合名字不能含有保留字符。

    文档基本管理

    •   : 类似于 MySQL 表里的记录

     

    文档基本管理 ( 1)

    • 文档管理命令: 查看 统计 添加 删除

    db. 集合名 .find()

    db. 集合名 .count()

    db. 集合名 .insert({name:jim})

    db. 集合名 .find({ 条件 })

    db. 集合名 .findOne() # 返回一条文档   //O是大写

    db. 集合名 .remove({}) # 删除所有文档

    db. 集合名 .remove({ 条件 }) # 删除与条件匹配的所有文档

    文档管理 ( 2)

    • 插入记录

    >db.user.insert(                                       

    { title: 'MongoDB 教程 ',

    description: 'MongoDB 是一个 Nosql 数据库 ',

    by: 'MongoDB 中文网 ',

    url: 'http://www.mongodb.org.cn',

    tags: ['mongodb', 'database', 'NoSQL'],

    likes: 100

    })

    >> db.user.remove({ "title" : "MongoDB 教程 "})  // 删除记录

    基本数据类型

    字符 string/ 布尔 bool/ null

    • 字符串 string

    UTF-8 字符串都可以表示为字符串类型的数据

    {name:” 张三” } { school:tarena}

    • 布尔 bool

    – 布尔类型有两个值 true false , {x:true}

    • 空 null

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

    数值 / 数组 array

    • 数值

    shell 默认使用 64 为浮点型数值。 {x : 3.14} {x : 3}

    NumberInt ( 4 字节整数) {x:NumberInt(3)}

    NumberLong ( 8 字节整数) {x:NumberLong(3)}

    • 数组 array

    – 数据列表或数据集可以表示为数组

    {x : [a,b,c]}

    代码 / 日期 / 对象

    • 代码

    – 查询和文档中可以包括任何 JavaScript 代码

    {x: function( ){/* 代码 */}}

    • 日期

    – 日期被存储为自新纪元依赖经过的毫秒数,不存储时区

    {x:new Date( )}

    • 对象

    – 对象 id 是一个 12 字节的字符串,是文档的唯一标识

    {x: ObjectId() }

    内嵌 / 正则表达式

    • 内嵌

    – 文档可以嵌套其他文档,被嵌套的文档作为值来处理

    {tarena: {address:”Beijing”,tel:”888888”,person: “hanshaoyun”}}

    • 正则表达式

    – 查询时,使用正则表达式作为限定条件

    {x:/ 正则表达式 /}

    添加变量

    bin]# tail -1 /etc/profile

    .... ...

    export PATH=/usr/local/mongodb/bin:$PATH

     mongodb]# source /etc/profile

    停服务

    bin]# pkill mongod

    连接Mongodb数据库

    [root@host52 bin]# ./mongo --host 192.168.4.52 --port 27052

    数据导出

    • 语法格式 1

    #mongoexport [--host IP 地址 --port 端口 ]

    -d 库名 -c 集合名 -f 字段名 1, 字段名 2 --type=csv

    > 目录名 / 文件名 .csv

    • 语法格式 2

    #mongoexport --host IP 地址 --port 端口

    - 库名 -c 集合名 -q { 条件 }-f 字段名 1 ,字段名 2

    --type=csv > 目录名 / 文件名 .csv

    注意:导出为 csv 格式必须使用 -f 指定字段名列表 !!!

    步骤:

    1)停止服务

    [root@host55 mongodb]# pkill mongod                      

    2)修改配置文件                                          

    [root@bogon  etc]# vim mongodb.conf        

    ... ...     //后面加两条

    bind_ip=192.168.4.55   #指定地址

    port=27055                   #指定端口

    3)起服务

    mongodb ]# ./bin/mongod -f  /usr/local/mongodb/etc/mongodb.conf

    4)导出

    •  //#导出为csv格式

    [root@host55 mongodb]# mkdir  -p /root/bakdir/

    [root@host55 mongodb]# touch  /root/bakdir/dc1.csv       // 库名    //表名 

    mongodb]# mongoexport --host 192.168.4.55 --port 27055  -d test -c user  -f    name,age  --type=csv  >  /root/bakdir/dc1.csv 

    •  //#导出为json格式

    mongodb]# mongoexport --host 192.168.4.55  --port 27055  -d test  -c user   --type=json  > /root/dc3.json

    5)查看

    [root@host55 mongodb]# cat  /root/dc3.json


    数据导出(续 1 )

    • 语法格式 3

    #mongoexport [ --host IP 地址 --port 端口 ]

    -d 库名 -c 集合名 [ -q { 条件 }’ –f 字段列表] --type=json  > 目录名 / 文件名 .json

    • 指定字段名导出

      bin]# mongoexport --host 192.168.4.64 --port 27017  -d bbs -c  t1 -q   

     '{ "name":"yaya"}'  -f  name,age --type=csv  > /root/bakdir/dc2.csv

    如图所示:

     

     


    数据导

    • 语法格式 1

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

    • 语法格式 2

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

    注意:导入数据时库和集合不存在时,会创建库和集合后导入数据反之以追加的方式导入数据到集合里,使用— drop 选项可以删除原有数据后导入新数据 --headerline 忽略标题

    • 导入  //#导入为json格式

     mongodb]#  mongoimport --host 192.168.4.55 --port  27055  -d test  -c bbd  --type=json  /root/dc3.json

    • 导入   //#导出为csv格式    

     mongodb]# mongoimport --host 192.168.4.55 --port 27055   -d test     -c  user   --type=csv  --headerline    /root/bakdir/dc1.csv

     注意:-f 指定的标题不可删掉,否则导入不成功


     数据备份恢复

    • 备份数据所有库到当前目录下的 dump 目录下

    # mongodump [ --host ip 地址 --port 端口 ]

    • 备份时指定备份的库和备份目录

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

             目录无需事先创建 备份时指定即可!!!

    • 查看 bson 文件内容  

    #bsondump ./dump/bbs/t1.bson

    [root@host64 bin]# mongodump  --host  192.168.4.64  --port 端口   

     //备份数据所有库到当前目录下的dump目录下

    [root@host64 bin]# mongodump  --host  192.168.4.64  --port  27017  -d   数据库名  -o   目标目录       //备份时指定库名的备份目录

    例子:

    [root@host64 bin]# mkdir  /root/bakdir

    [root@host64 bin]# mongodump  --host  192.168.4.55  --port  27055  -d       test  -o   /root/bakdir

    [root@host55 ~]# cd /root/bakdir1/test/

    [root@host64 bin]# ./bsondump  bbd.bson    //查看bson文件内容


    数据恢复

    • 语法格式  (恢复之前要确定没有要恢复的库,或者导入另一个)

    mongorestore --host IP 地址 --port 端口 -d 数据库名 [ -c 集合名 ] 备份目录名

     

     

     

    ##############################################

    例子:

    [root@host55 ~]# /usr/local/mongodb/bin/mongorestore --host  192.168.4.55   --port  27055  -d  数据库名   备份目录名

    [root@host55 ~]# /usr/local/mongodb/bin/mongorestore --host  192.168.4.55     --port  27055  -d   test    /root/bakdir/test/

    [root@host55 ~]# /usr/local/mongodb/bin/mongorestore --host  192.168.4.55   --port  27055   -d  test  -c user  /root/bakdir1/test/bbd.bson

    ###############################################

  • 相关阅读:
    个人作业——软件工程实践总结作业
    个人作业——软件评测
    软件工程实践2019第四次作业
    软件工程实践2019第三次作业
    软件工程实践2019第二次作业
    软件工程实践2019第一次作业
    1
    个人作业——软件工程实践总结
    团队作业第二次—项目选题报告(追光的人)
    结对第二次—文献摘要热词统计及进阶需求
  • 原文地址:https://www.cnblogs.com/qingbai/p/12016958.html
Copyright © 2020-2023  润新知