• 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

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

  • 相关阅读:
    mysqldump 导出数据库为DBname的表名为Tname的表结构 导出数据库的所有表的表结构
    mysqldump 备份某张表 Warning: A partial dump from a server that has GTIDs will by default include the GTIDs of all transactions,
    nfs missing codepage or helper program, or other error
    date 增加一个小时 减少一个小时
    mysqldump 备份单个数据库
    mysql删除账户
    怎么删除某个用户的所有帖子?
    mongodb删除重复数据
    ReSharper2018破解详细方法
    激活windows和office
  • 原文地址:https://www.cnblogs.com/qingbai/p/12016958.html
Copyright © 2020-2023  润新知